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_; + };