| 223 | } |
| 224 | |
| 225 | void accept_handler(const boost::system::error_code& error, SchemeProcess* scm, boost::asio::ip::tcp::socket* client_socket) |
| 226 | { |
| 227 | //std::cout << "ACCEPT_HANDLER" << std::endl; |
| 228 | if (!error) { |
| 229 | ascii_text_color(1,7,10); |
| 230 | std::cout << "New client connection" << std::endl; |
| 231 | ascii_text_color(0,9,10); |
| 232 | fflush(NULL); |
| 233 | boost::asio::ip::tcp::acceptor* server_socket = scm->getServerSocket(); |
| 234 | boost::asio::io_service* io_service = scm->getIOService(); |
| 235 | bool with_banner = scm->withBanner(); |
| 236 | std::stringstream ss; |
| 237 | if(with_banner) SchemeProcess::banner(&ss); |
| 238 | else ss << "Welcome to extempore!"; |
| 239 | uint64_t time = UNIV::TIME; |
| 240 | int hours = time / UNIV::HOUR; |
| 241 | time -= hours * UNIV::HOUR; |
| 242 | int minutes = time / UNIV::MINUTE; |
| 243 | time -= minutes * UNIV::MINUTE; |
| 244 | int seconds = time / UNIV::SECOND; |
| 245 | char prompt[28]; |
| 246 | sprintf(prompt, "[extempore %.2d:%.2d:%.2d]: ",hours,minutes,seconds); |
| 247 | if(with_banner) ss << prompt; |
| 248 | client_socket->write_some(boost::asio::buffer(ss.str().c_str(), ss.str().length()+1)); |
| 249 | std::stringstream* ss2 = new std::stringstream; |
| 250 | void* data = malloc(1025); |
| 251 | start_read(scm,client_socket,ss2,data); |
| 252 | // Accept succeeded. |
| 253 | start_accept(scm); |
| 254 | } |
| 255 | } |
| 256 | |
| 257 | void read_handler(const boost::system::error_code& error, std::size_t bytes_transferred, SchemeProcess* scm, boost::asio::ip::tcp::socket* client_socket, std::stringstream* ss, void* data) |
| 258 | { |
nothing calls this directly
no test coverage detected