#include "stdafx.h" #include "./TempServerSession.h" #include #include #include "./ServerFrame.h" //================================================================================================== __IMPL_CUSTOMPOOL_PTR(TempServerSession); //================================================================================================== TempServerSession::TempServerSession(void) { } TempServerSession::~TempServerSession(void) { } void TempServerSession::Init() { ServerSession::Init(); m_bFirst = TRUE; } void TempServerSession::OnRecv(BYTE* msg, WORD msg_size) { ASSERT(m_bFirst != false); m_bFirst = false; // NOTE: f110617.1L, After using dual buffer for reception, ... hummmm. ... MSG_SERVER_TYPE* recv_msg = (MSG_SERVER_TYPE *)msg; const bool valid_message = recv_msg->m_byCategory == SERVERCOMMON && recv_msg->m_byProtocol == SERVERCOMMON_SERVERTYPE && sizeof(*recv_msg) == msg_size; if (valid_message == false) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=unexpected first message, ") _T("C:P=%03d:%03d, size=%d|"), recv_msg->m_byCategory, recv_msg->m_byProtocol, msg_size); return; }; //---------------------------------------------------------------------------------------------- ServerFrame* const server_frame = GetFrame(); // [9/8/2006] // ??﹞?﹉? 易?昌?╞? GameServer?? ﹉屆0? ServerType0╳ ╞??? ﹉???0╳ ??取??? ?╳?? ?╱????╞?. // ╱╱0╳ ??昆見╱? ?=?赤 0?▽?卹〝 ﹉???╱? 卹?????╞? ﹉??╱﹞? ????. ▽▼﹞▽??... ﹞?▽▼╞? 取帚取??? ??昆見??? ServerSession* new_session = NULL; const eSERVER_TYPE server_type = static_cast(recv_msg->m_byServerType); if (DWORD(server_type) < DWORD(MAX_SERVER)) { new_session = server_frame->AllocServerSession(server_type); }; if (new_session == NULL) { Disconnect(); SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=unknown server type (%d)"), server_type); return; } // Redirect(new_session); // // TempServerSession?? ????卦足╱? ??﹞?0? 卹卹卹?0╳ ??╞身?赤??! DWORD session_index = GetSessionIndex(); server_frame->RemoveSession(session_index); server_frame->FreeServerSession(this); // new_session->OnRedirect(session_index, recv_msg); }