From d3bc4bba6afda3720f13666bb9d33b351f2a696c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 2 Jun 2019 19:42:14 +0800 Subject: [PATCH] 1 --- server/robotserver/constant.h | 1 + server/robotserver/virtualclient.cc | 2 +- server/robotserver/virtualclient.h | 6 ++++++ server/robotserver/virtualclientmgr.cc | 12 ++++++++++++ server/robotserver/virtualclientmgr.h | 5 +++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/server/robotserver/constant.h b/server/robotserver/constant.h index ac3df34..1cdf709 100755 --- a/server/robotserver/constant.h +++ b/server/robotserver/constant.h @@ -8,6 +8,7 @@ enum SocketFrom_e enum InnerMesssage_e { IM_VirtualClientDisconnect = 100, + IM_VirtualClientConnect, IM_PlayerOffline, IM_ExecGM, IM_DBSConnDisconnect, diff --git a/server/robotserver/virtualclient.cc b/server/robotserver/virtualclient.cc index ee47283..4774122 100644 --- a/server/robotserver/virtualclient.cc +++ b/server/robotserver/virtualclient.cc @@ -43,7 +43,7 @@ void VirtualClient::on_connect(a8::TcpClient* sender) { recv_bufflen_ = 0; a8::UdpLog::Instance()->Info("target server connected", {}); - App::Instance()->AddIMMsg(IM_VirtualClientDisconnect, + App::Instance()->AddIMMsg(IM_VirtualClientConnect, a8::XParams() .SetSender(instance_id) ); diff --git a/server/robotserver/virtualclient.h b/server/robotserver/virtualclient.h index 2309626..df141cb 100644 --- a/server/robotserver/virtualclient.h +++ b/server/robotserver/virtualclient.h @@ -23,6 +23,12 @@ class VirtualClient void UnInit(); void Update(); + template + void SendMsg(T& msg) + { + static int msgid = f8::Net_GetMessageId(msg); + } + private: void on_error(a8::TcpClient* sender, int errorId); void on_connect(a8::TcpClient* sender); diff --git a/server/robotserver/virtualclientmgr.cc b/server/robotserver/virtualclientmgr.cc index a749422..9f4a715 100644 --- a/server/robotserver/virtualclientmgr.cc +++ b/server/robotserver/virtualclientmgr.cc @@ -13,6 +13,7 @@ void VirtualClientMgr::Init() client->remote_ip = App::Instance()->wsp_host; client->remote_port = App::Instance()->wsp_port; account_hash_[client->account] = client; + instanceid_hash_[client->instance_id] = client; client->Init(); } } @@ -29,3 +30,14 @@ void VirtualClientMgr::Update() } } +VirtualClient* VirtualClientMgr::GetVirtualClientByAccount(const std::string& account) +{ + auto itr = account_hash_.find(account); + return itr != account_hash_.end() ? itr->second: nullptr; +} + +VirtualClient* VirtualClientMgr::GetVirtualClientByInstanceId(int instance_id) +{ + auto itr = instanceid_hash_.find(instance_id); + return itr != instanceid_hash_.end() ? itr->second : nullptr; +} diff --git a/server/robotserver/virtualclientmgr.h b/server/robotserver/virtualclientmgr.h index c2193a6..201dff1 100644 --- a/server/robotserver/virtualclientmgr.h +++ b/server/robotserver/virtualclientmgr.h @@ -19,6 +19,11 @@ class VirtualClientMgr : public a8::Singleton void UnInit(); void Update(); + VirtualClient* GetVirtualClientByAccount(const std::string& account); + VirtualClient* GetVirtualClientByInstanceId(int instance_id); + private: std::map account_hash_; + std::map instanceid_hash_; + };