From 62515235ca4bd3760b8730fa1c71bee9eebe4921 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 18 May 2019 15:17:34 +0800 Subject: [PATCH] ss::SS_WSP_SocketDisconnect --- server/gameserver/playermgr.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index f27def5..9474a52 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -14,6 +14,11 @@ void PlayerMgr::UnInit() void PlayerMgr::_SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg) { + auto itr = socket_hash_.find(hdr.socket_handle); + if (itr != socket_hash_.end()) { + itr->second->socket_handle = 0; + socket_hash_.erase(itr); + } } int PlayerMgr::OnlineNum() @@ -51,5 +56,16 @@ Player* PlayerMgr::CreatePlayerByCMJoin(int socket, const cs::CMJoin& msg) void PlayerMgr::OnClientDisconnect(a8::XParams& param) { + int gg_socket = param.sender; + std::vector socket_list; + for (auto& pair : socket_hash_) { + unsigned short parent_socket_handle = (pair.first >> 16) & 0xFFFF; + if (parent_socket_handle == gg_socket) { + socket_list.push_back(pair.first); + } + } + for (int socket_handle : socket_list) { + socket_hash_.erase(socket_handle); + } }