示例#1
0
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;
}
示例#2
0
//关闭连接
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;
}