MCPcopy Create free account
hub / github.com/digego/extempore / accept_handler

Function accept_handler

src/SchemeProcess.cpp:225–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 6

ascii_text_colorFunction · 0.85
start_readFunction · 0.85
start_acceptFunction · 0.85
getServerSocketMethod · 0.80
withBannerMethod · 0.80
getIOServiceMethod · 0.45

Tested by

no test coverage detected