diff --git a/server/wsproxy/GCListener.cc b/server/wsproxy/GCListener.cc index cf7e3ab..faba0f1 100644 --- a/server/wsproxy/GCListener.cc +++ b/server/wsproxy/GCListener.cc @@ -6,6 +6,7 @@ #include #include +#include #include "app.h" #include "GCListener.h" @@ -91,12 +92,16 @@ public: virtual void OnDisConnect() override { - #if 0 - App::Instance()->AddIMMsg(IM_ClientSocketDisconnect, - a8::XParams() - .SetSender(socket_handle) - .SetParam1(1)); - #endif + f8::MsgQueue::Instance()->PostMsg + ( + IM_ClientSocketDisconnect, + a8::Args + ( + { + (int)socket_handle + } + ) + ); } }; diff --git a/server/wsproxy/downstreammgr.cc b/server/wsproxy/downstreammgr.cc index e696877..984e5a4 100644 --- a/server/wsproxy/downstreammgr.cc +++ b/server/wsproxy/downstreammgr.cc @@ -1,6 +1,7 @@ #include "precompile.h" #include +#include #include "downstreammgr.h" #include "ss_proto.pb.h" @@ -13,6 +14,14 @@ void DownStreamMgr::Init() { + f8::MsgQueue::Instance()->RegisterCallBack + ( + IM_ClientSocketDisconnect, + [this] (const a8::Args& args) + { + int socket_handle = args.Get(0); + OnClientDisconnect(socket_handle); + }); } void DownStreamMgr::UnInit() @@ -26,21 +35,19 @@ void DownStreamMgr::UnInit() #endif } -#if 0 -void DownStreamMgr::OnClientDisconnect(a8::XParams& param) +void DownStreamMgr::OnClientDisconnect(int socket_handle) { - GameClient* client = GetGameClientBySocket(param.sender); + DownStream* client = GetGameClientBySocket(socket_handle); if (client) { if (client->conn) { ss::SS_WSP_SocketDisconnect msg; - client->conn->SendMsg(param.sender, msg); + client->conn->SendMsg(socket_handle, msg); } - socket_hash_.erase(param.sender); + socket_hash_.erase(socket_handle); delete client; } - RemovePendingAccount(param.sender); + RemovePendingAccount(socket_handle); } -#endif #if 0 void DownStreamMgr::OnTargetServerDisconnect(a8::XParams& param) diff --git a/server/wsproxy/downstreammgr.h b/server/wsproxy/downstreammgr.h index 8b032b6..992d770 100644 --- a/server/wsproxy/downstreammgr.h +++ b/server/wsproxy/downstreammgr.h @@ -15,7 +15,6 @@ class DownStreamMgr : public a8::Singleton void UnInit(); #if 0 - void OnClientDisconnect(a8::XParams& param); void OnTargetServerDisconnect(a8::XParams& param); void OnTargetServerConnect(a8::XParams& param); #endif @@ -25,6 +24,7 @@ class DownStreamMgr : public a8::Singleton private: + void OnClientDisconnect(int socket_handle); void RemovePendingAccount(int socket_handle); private: