void Listener<SocketType>::BeginAccept() { NetworkThread<SocketType> *worker = SelectWorker(); SocketType *socket = worker->CreateSocket(); m_acceptor.async_accept(socket->GetAsioSocket(), [this,worker,socket](const boost::system::error_code &ec) { this->OnAccept(worker, socket, ec); }); }
int main(int argc, char **argv) { int opt; CalcServer::worker_t worker; while ((opt = getopt(argc, argv, "smnxea")) != -1) { switch (opt) { case 's': worker = SingleWorker(); break; case 'm': worker = MultithreadWorker(); break; case 'n': worker = NonblockWorker(); break; case 'x': worker = SelectWorker(); break; case 'e': worker = EPollWorker(); break; case 'a': worker = AIOWorker(); break; default: return -1; } } if (!worker) { worker = SingleWorker(); } return CalcServer(worker).run(); }