#include "stdafx.h" #include "StatServerMultiDispatch.h" #include #include #include #include enum StatServerConst { STAT_SERVER_DEFAULT_DISPATCH_NUM = 10 }; CMultiDispatch& CStatServerMultiDispatch::GetDispatchTable() { static CMultiDispatch multiDispatch; return multiDispatch; } CStatServerMultiDispatch::CStatServerMultiDispatch(CSession& Session) : CRylServerDispatch(Session, STAT_SERVER_DEFAULT_DISPATCH_NUM) { DETLOG1(g_Log, "this:0x%p/CStatServerMultiDispatch Created", this); } CStatServerMultiDispatch::~CStatServerMultiDispatch() { DETLOG1(g_Log, "this:0x%p/CStatServerMultiDispatch Destroyed", this); } void CStatServerMultiDispatch::Connected() { // Á¢¼Ó IP¸¦ key·Î Àâ¾Æ¼­ ¼¼ÆÃÇÑ´Ù. INET_Addr& remoteAddr = GetSession().GetRemoteAddr(); unsigned long dwDispatchID = remoteAddr.get_addr_in().sin_addr.S_un.S_addr; GetDispatchTable().SetDispatch(dwDispatchID, this); DETLOG2(g_Log, "this:0x%p/Key:%u/CStatServerMultiDispatch Connected", this, dwDispatchID); } void CStatServerMultiDispatch::Disconnected() { // Á¢¼Ó IP¸¦ key·Î Àâ¾Æ¼­ »èÁ¦ÇÑ´Ù. INET_Addr& remoteAddr = GetSession().GetRemoteAddr(); unsigned long dwDispatchID = remoteAddr.get_addr_in().sin_addr.S_un.S_addr; GetDispatchTable().RemoveDispatch(dwDispatchID); DETLOG2(g_Log, "this:0x%p/Key:%u/CStatServerMultiDispatch Disconnected", this, dwDispatchID); } bool CStatServerMultiDispatch::DispatchPacket(PktBase* lpPktBase) { return true; }