virtual void startup() { thread_accepter_.start(new _ESQ accepter(setter_, dispatcher_, handler_), this); thread_transceiver_.start(new _ESQ transceiver(setter_, dispatcher_, handler_), this); thread_recycler_.start(new _ESQ recycler(setter_, dispatcher_, handler_), this); thread_destroyer_.start(new _ESQ destroyer(setter_, dispatcher_, handler_), this); processer_pools_.start(this); }
AccepterID CTcpSessionManager::AddAcceptor(const tagAcceptorConfigTraits &traits) { if (m_mapAccepterConfig.find(traits.aID) != m_mapAccepterConfig.end() || traits.aID == InvalidAccepterID) { LOGE("AddAcceptor confilict AccecptID. traits=" << traits); return InvalidAccepterID; } m_mapAccepterConfig[traits.aID].first = traits; CTcpAcceptPtr accepter(new zsummer::network::CTcpAccept(m_summer)); if (!accepter->OpenAccept(traits.listenIP.c_str(), traits.listenPort)) { LOGE("AddAcceptor OpenAccept Failed. traits=" << traits); return InvalidAccepterID; } m_mapAccepterPtr[traits.aID] = accepter; CTcpSocketPtr newclient(new zsummer::network::CTcpSocket); newclient->Initialize(m_summer); accepter->DoAccept(newclient, std::bind(&CTcpSessionManager::OnAcceptNewClient, this, std::placeholders::_1, std::placeholders::_2, accepter, traits.aID)); return traits.aID; }