diff --git a/server/imserver/app.cc b/server/imserver/app.cc index 71c1acb..5883998 100644 --- a/server/imserver/app.cc +++ b/server/imserver/app.cc @@ -364,12 +364,12 @@ void App::DispatchMsg() break; case SF_IMConn: { - + ProcessIMConnMsg(hdr); } break; case SF_MSConn: { - + ProcessMSConnMsg(hdr); } break; default: @@ -442,35 +442,37 @@ void App::ProcessIMServerMsg(f8::MsgHdr& hdr) } } -void App::ProcessMasterServerMsg(f8::MsgHdr& hdr) +void App::ProcessIMConnMsg(f8::MsgHdr& hdr) { - f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->msmsghandler, + f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->imcmsghandler, hdr.msgid); if (handler) { - #if 0 switch (handler->handlerid) { - case HID_MasterSvrMgr: - ProcessNetMsg(handler, MasterSvrMgr::Instance(), hdr); + case HID_PlayerMgr: + ProcessNetMsg(handler, PlayerMgr::Instance(), hdr); + break; + default: + { + } break; } - #endif } } -void App::ProcessTargetServerMsg(f8::MsgHdr& hdr) +void App::ProcessMSConnMsg(f8::MsgHdr& hdr) { - if (hdr.msgid == ss::_SS_ForceCloseSocket) { - WSListener::Instance()->ForceCloseClient(hdr.socket_handle); - return; - } - if (hdr.msgid < 100) { - return; - } - if (hdr.msgid == ss::_SS_CMLogin || hdr.msgid == ss::_SS_CMReConnect) { - #if 0 - GameClientMgr::Instance()->BindTargetConn(hdr.socket_handle, hdr.ip_saddr); - #endif - WSListener::Instance()->MarkClient(hdr.socket_handle, true); + f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->mscmsghandler, + hdr.msgid); + if (handler) { + switch (handler->handlerid) { + case HID_PlayerMgr: + ProcessNetMsg(handler, PlayerMgr::Instance(), hdr); + break; + default: + { + } + break; + } } } diff --git a/server/imserver/app.h b/server/imserver/app.h index f45c41c..f38d789 100644 --- a/server/imserver/app.h +++ b/server/imserver/app.h @@ -44,8 +44,8 @@ private: void ProcessWSProxyMsg(f8::MsgHdr& hdr); void ProcessIMServerMsg(f8::MsgHdr& hdr); - void ProcessMasterServerMsg(f8::MsgHdr& hdr); - void ProcessTargetServerMsg(f8::MsgHdr& hdr); + void ProcessIMConnMsg(f8::MsgHdr& hdr); + void ProcessMSConnMsg(f8::MsgHdr& hdr); void InitLog(); void UnInitLog(); diff --git a/server/imserver/handlermgr.cc b/server/imserver/handlermgr.cc index d3290e7..e47b173 100644 --- a/server/imserver/handlermgr.cc +++ b/server/imserver/handlermgr.cc @@ -35,6 +35,10 @@ void HandlerMgr::RegisterNetMsgHandlers() { RegisterNetMsgHandler(&immsghandler, &IMListener::_SS_Ping); + RegisterNetMsgHandler(&mscmsghandler, &PlayerMgr::_SS_MS_PushUserList); + + RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_SendChatMsg); + RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping); RegisterNetMsgHandler(&wsmsghandler, &PlayerMgr::_SS_WSP_SocketDisconnect); diff --git a/server/imserver/handlermgr.h b/server/imserver/handlermgr.h index 0199388..9e6b610 100644 --- a/server/imserver/handlermgr.h +++ b/server/imserver/handlermgr.h @@ -22,8 +22,9 @@ class HandlerMgr : public a8::Singleton void UnInit(); f8::NetMsgHandlerObject wsmsghandler; - f8::NetMsgHandlerObject msmsghandler; f8::NetMsgHandlerObject immsghandler; + f8::NetMsgHandlerObject imcmsghandler; + f8::NetMsgHandlerObject mscmsghandler; void ProcGMMsg(unsigned long saddr, int sockhandle, const std::string& url, const std::string& querystr); diff --git a/server/imserver/playermgr.cc b/server/imserver/playermgr.cc index 0a6cdb7..05f3b92 100644 --- a/server/imserver/playermgr.cc +++ b/server/imserver/playermgr.cc @@ -22,6 +22,16 @@ void PlayerMgr::_SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_Socke } } +void PlayerMgr::_SS_MS_PushUserList(f8::MsgHdr& hdr, const ss::SS_MS_PushUserList& msg) +{ + +} + +void PlayerMgr::_SS_IM_SendChatMsg(f8::MsgHdr& hdr, const ss::SS_IM_SendChatMsg& msg) +{ + +} + void PlayerMgr::_CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg) { diff --git a/server/imserver/playermgr.h b/server/imserver/playermgr.h index 6a09532..5ccb8f2 100644 --- a/server/imserver/playermgr.h +++ b/server/imserver/playermgr.h @@ -8,6 +8,8 @@ namespace cs namespace ss { class SS_WSP_SocketDisconnect; + class SS_MS_PushUserList; + class SS_IM_SendChatMsg; } class Player; @@ -25,6 +27,9 @@ class PlayerMgr : public a8::Singleton void UnInit(); void _SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg); + void _SS_MS_PushUserList(f8::MsgHdr& hdr, const ss::SS_MS_PushUserList& msg); + void _SS_IM_SendChatMsg(f8::MsgHdr& hdr, const ss::SS_IM_SendChatMsg& msg); + void _CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg); Player* GetPlayerBySocket(int socket); diff --git a/server/tools/protobuild/ss_proto.proto b/server/tools/protobuild/ss_proto.proto index 382c412..1081cf4 100755 --- a/server/tools/protobuild/ss_proto.proto +++ b/server/tools/protobuild/ss_proto.proto @@ -57,3 +57,27 @@ message SS_Pong message SS_ForceCloseSocket { } + +message SS_IM_UserOnline +{ + optional string account_id = 1; +} + +message SS_IM_UserOffline +{ + optional string account_id = 1; +} + +message SS_IM_PullUserList +{ + +} +message SS_MS_PushUserList +{ + +} + +message SS_IM_SendChatMsg +{ + +} \ No newline at end of file