diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 46d197c..4dc1e5e 100755 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -16,6 +16,7 @@ #include "jsondatamgr.h" #include "handlermgr.h" #include "GCListener.h" +#include "playermgr.h" #include "framework/cpp/msgqueue.h" #include "framework/cpp/tglog.h" @@ -82,6 +83,7 @@ void App::Init(int argc, char* argv[]) JsonDataMgr::Instance()->Init(); uuid.SetMachineId(instance_id); GCListener::Instance()->Init(); + PlayerMgr::Instance()->Init(); a8::UdpLog::Instance()->Info("gameserver starting instance_id:%d pid:%d", {instance_id, getpid()}); { @@ -103,6 +105,7 @@ void App::UnInit() if (terminated) { return; } + PlayerMgr::Instance()->UnInit(); GCListener::Instance()->UnInit(); JsonDataMgr::Instance()->UnInit(); f8::MsgQueue::Instance()->UnInit(); @@ -292,6 +295,7 @@ void App::DispatchMsg() switch (pdelnode->sockfrom) { case SF_GameClient: { + ProcessGameClientMsg(hdr); } break; } @@ -353,6 +357,23 @@ void App::ProcessIMMsg() } } +void App::ProcessGameClientMsg(f8::MsgHdr& hdr) +{ + f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->gcmsghandler, + hdr.msgid); + if (handler) { + switch (handler->handlerid) { + case HID_PlayerMgr: + ProcessNetMsg(handler, PlayerMgr::Instance(), hdr); + break; + default: + { + } + break; + } + } +} + void App::InitLog() { std::string filename_fmt = PROJ_LOG_FILENAME_FMT; diff --git a/server/gameserver/app.h b/server/gameserver/app.h index 1ea9ed1..9d9c899 100644 --- a/server/gameserver/app.h +++ b/server/gameserver/app.h @@ -41,6 +41,7 @@ private: void DispatchMsg(); void ProcessIMMsg(); + void ProcessGameClientMsg(f8::MsgHdr& hdr); void InitLog(); void UnInitLog(); diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 439cd4a..901105d 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -15,7 +15,8 @@ enum InnerMesssage_e //网络处理对象 enum NetHandler_e { - HID_GSMgr, + HID_PlayerMgr, + HID_Plyaer }; const char* const PROJ_NAME_FMT = "game%d_gameserver"; diff --git a/server/gameserver/handlermgr.cc b/server/gameserver/handlermgr.cc index f63aa13..9363a96 100644 --- a/server/gameserver/handlermgr.cc +++ b/server/gameserver/handlermgr.cc @@ -6,6 +6,9 @@ #include "GCListener.h" #include "app.h" +#include "playermgr.h" + +#include "cs_proto.pb.h" static void _GMOpsSelfChecking(f8::JsonHttpRequest* request) { @@ -36,6 +39,7 @@ void HandlerMgr::UnInit() void HandlerMgr::RegisterNetMsgHandlers() { + RegisterNetMsgHandler(&gcmsghandler, &PlayerMgr::_CMAuthSession); } void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle, diff --git a/server/gameserver/handlermgr.h b/server/gameserver/handlermgr.h index 2bf21b8..99c9318 100644 --- a/server/gameserver/handlermgr.h +++ b/server/gameserver/handlermgr.h @@ -21,7 +21,7 @@ class HandlerMgr : public a8::Singleton void Init(); void UnInit(); - f8::NetMsgHandlerObject ggmsghandler; + f8::NetMsgHandlerObject gcmsghandler; void ProcGMMsg(unsigned long saddr, int sockhandle, const std::string& url, const std::string& quyerstr); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc new file mode 100644 index 0000000..e69de29 diff --git a/server/gameserver/player.h b/server/gameserver/player.h new file mode 100644 index 0000000..e69de29 diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc new file mode 100644 index 0000000..f1c5ac5 --- /dev/null +++ b/server/gameserver/playermgr.cc @@ -0,0 +1,38 @@ +#include "precompile.h" + +#include "playermgr.h" + +void PlayerMgr::Init() +{ + +} + +void PlayerMgr::UnInit() +{ + +} + +void PlayerMgr::_CMAuthSession(f8::MsgHdr& hdr, const cs::CMAuthSession& msg) +{ + +} + +int PlayerMgr::OnlineNum() +{ + return 0; +} + +Player* PlayerMgr::GetPlayerBySocket(int socket) +{ + return nullptr; +} + +void PlayerMgr::OnClientDisconnect(a8::XParams& param) +{ + +} + +void PlayerMgr::RemovePlayerBySocket(int socket_handle) +{ + +} diff --git a/server/gameserver/playermgr.h b/server/gameserver/playermgr.h new file mode 100644 index 0000000..544b4f1 --- /dev/null +++ b/server/gameserver/playermgr.h @@ -0,0 +1,30 @@ +#pragma once + +namespace cs +{ + class CMAuthSession; +} + +class Player; +class PlayerMgr : public a8::Singleton +{ + public: + enum { HID = HID_PlayerMgr }; + + private: + PlayerMgr() {}; + friend class a8::Singleton; + + public: + void Init(); + void UnInit(); + + void _CMAuthSession(f8::MsgHdr& hdr, const cs::CMAuthSession& msg); + int OnlineNum(); + Player* GetPlayerBySocket(int socket); + void OnClientDisconnect(a8::XParams& param); + void RemovePlayerBySocket(int socket_handle); + + private: + std::map socket_hash_; +};