CMultiXLayer::EventHandlerReturn CMultiXL3::EventHandler(CMultiXEvent &Event) { switch(Event.EventCode()) { case CMultiXEvent::L2ConnectCompleted : return OnConnectCompleted(Event); break; case CMultiXEvent::L2AcceptCompleted : return OnAcceptCompleted(Event); break; case CMultiXEvent::L2NewBlockReceived : return OnNewBlockReceived(Event); break; case CMultiXEvent::L2SendCompleted : return OnSendCompleted(Event); break; case CMultiXEvent::L2CloseCompleted : return OnCloseCompleted(Event); break; } Event.Target() = this->UpperLayer(); MultiX().QueueEvent(&Event); return CMultiXLayer::KeepEvent; }
//关闭连接 bool CServerSocketItem::CloseSocket(WORD wRountID) { //状态判断 if (m_wRountID!=wRountID) return false; //关闭连接 if (m_hSocket!=INVALID_SOCKET) { closesocket(m_hSocket); m_hSocket=INVALID_SOCKET; } //判断关闭 if ((m_bRecvIng==false)&&(m_OverLappedSendActive.GetCount()==0)) OnCloseCompleted(); return true; }