void Disconnect(ServerSession::Ptr pSession, DISCONNECT_REASON reason) { SessionList::iterator found = _sessions.find(pSession->GetId()); if (found != _sessions.end()) { std::cout << "disconnect " << pSession->GetId() << " reason:" << reason << std::endl; _disconnectHandler(pSession, reason); _sessions.erase(found); } }
void SessionPool::closeAll(SessionList& sessionList) { SessionList::iterator it = sessionList.begin(); for (; it != sessionList.end();) { try { (*it)->session->session()->close(); } catch (...) { } it = sessionList.erase(it); if (_nSessions > 0) --_nSessions; } }