diff --git a/server/imserver/app.cc b/server/imserver/app.cc index 64da1dc..7ad5c27 100644 --- a/server/imserver/app.cc +++ b/server/imserver/app.cc @@ -396,6 +396,14 @@ void App::ProcessWSProxyMsg(f8::MsgHdr& hdr) ProcessNetMsg(handler, WSListener::Instance(), hdr); } break; + case HID_Player: + { + Player* hum = PlayerMgr::Instance()->GetPlayerBySocket(hdr.socket_handle); + if (hum) { + ProcessNetMsg(handler, hum, hdr); + } + } + break; case HID_PlayerMgr: { ProcessNetMsg(handler, PlayerMgr::Instance(), hdr); diff --git a/server/imserver/playermgr.cc b/server/imserver/playermgr.cc index 899db36..0a6cdb7 100644 --- a/server/imserver/playermgr.cc +++ b/server/imserver/playermgr.cc @@ -38,6 +38,12 @@ Player* PlayerMgr::GetPlayerBySocket(int socket) return itr != socket_hash_.end() ? itr->second : nullptr; } +Player* PlayerMgr::GetPlayerByAccountId(const std::string& account_id) +{ + auto itr = accountid_hash_.find(account_id); + return itr != accountid_hash_.end() ? itr->second : nullptr; +} + void PlayerMgr::OnClientDisconnect(a8::XParams& param) { int gg_socket = param.sender; diff --git a/server/imserver/playermgr.h b/server/imserver/playermgr.h index 4b04754..6a09532 100644 --- a/server/imserver/playermgr.h +++ b/server/imserver/playermgr.h @@ -27,9 +27,11 @@ class PlayerMgr : public a8::Singleton void _SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg); void _CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg); + Player* GetPlayerBySocket(int socket); + Player* GetPlayerByAccountId(const std::string& account_id); + private: int OnlineNum(); - Player* GetPlayerBySocket(int socket); void OnClientDisconnect(a8::XParams& param); void RemovePlayerBySocket(int socket_handle);