diff --git a/server/masterserver/svrmgr.cc b/server/masterserver/svrmgr.cc index 2c4a764..717b894 100644 --- a/server/masterserver/svrmgr.cc +++ b/server/masterserver/svrmgr.cc @@ -9,12 +9,13 @@ void SvrMgr::Init() { - a8::Timer::Instance()->AddRepeatTimer(1000 * 2, - a8::XParams(), - [] (const a8::XParams& param) - { - SvrMgr::Instance()->ClearTimeOutNode(); - }); + a8::Timer::Instance()->AddRepeatTimer + (1000 * 2, + a8::XParams(), + [] (const a8::XParams& param) + { + SvrMgr::Instance()->ClearTimeOutNode(); + }); } void SvrMgr::UnInit() @@ -26,20 +27,13 @@ void SvrMgr::_SS_WSP_RequestTargetServer(f8::MsgHdr& hdr, const ss::SS_WSP_Reque { ss::SS_MS_ResponseTargetServer respmsg; respmsg.set_context_id(msg.context_id()); - SvrNode* node = GetNodeByTeamId(msg.team_id()); + SvrNode* node = AllocNode(); if (node) { respmsg.set_host(node->ip); respmsg.set_port(node->port); } else { - node = AllocNode(); - if (node) { - respmsg.set_host(node->ip); - respmsg.set_port(node->port); - team_hash_[msg.team_id()] = node; - } else { - respmsg.set_error_code(1); - respmsg.set_error_msg("无法分配节点"); - } + respmsg.set_error_code(1); + respmsg.set_error_msg("无法分配节点"); } GGListener::Instance()->SendMsg(hdr.socket_handle, respmsg); } @@ -50,54 +44,6 @@ void SvrMgr::_SS_Ping(f8::MsgHdr& hdr, const ss::SS_Ping& msg) GGListener::Instance()->SendMsg(hdr.socket_handle, pongmsg); } -void SvrMgr::___GSReport(f8::JsonHttpRequest* request) -{ - std::string ip = request->request.Get("ip"); - int port = request->request.Get("port"); - int alive_count = request->request.Get("alive_count"); - int online_num = request->request.Get("online_num"); - int room_num = request->request.Get("room_num"); - int instance_id = request->request.Get("instance_id"); - int node_id = request->request.Get("node_id"); - bool servicing = request->request.Get("servicing"); - std::string key = ip + ":" + a8::XValue(port).GetString(); - - auto itr = node_key_hash_.find(key); - if (itr != node_key_hash_.end()) { - if (itr->second.online_num != online_num || - itr->second.room_num != room_num || - itr->second.alive_count != alive_count || - itr->second.servicing != servicing - ) { - itr->second.online_num = online_num; - itr->second.room_num = room_num; - itr->second.servicing = servicing; - RearrangeNode(); - } - itr->second.alive_count = alive_count; - itr->second.last_active_tick = a8::XGetTickCount(); - } else { - SvrNode gs; - gs.key = key; - gs.node_id = node_id; - gs.node_idx = App::Instance()->NewUuid(); - gs.instance_id = instance_id; - gs.alive_count = alive_count; - gs.online_num = online_num; - gs.room_num = room_num; - gs.ip = ip; - gs.port = port; - gs.servicing = servicing; - gs.last_active_tick = a8::XGetTickCount(); - node_key_hash_[key] = gs; - node_sorted_list_.push_back(&node_key_hash_[key]); - RearrangeNode(); - } - - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); -} - void SvrMgr::___GSList(f8::JsonHttpRequest* request) { { @@ -145,12 +91,6 @@ void SvrMgr::___GSList(f8::JsonHttpRequest* request) } } -SvrNode* SvrMgr::GetNodeByTeamId(const std::string& team_id) -{ - auto itr = team_hash_.find(team_id); - return itr != team_hash_.end() ? itr->second : nullptr; -} - SvrNode* SvrMgr::AllocNode() { if (node_sorted_list_.empty()) { @@ -220,17 +160,6 @@ void SvrMgr::ClearTimeOutNode() } } } - { - std::vector deleted_teams; - for (auto& pair : team_hash_) { - if (pair.second == node) { - deleted_teams.push_back(pair.first); - } - } - for (const std::string& team_id : deleted_teams) { - team_hash_.erase(team_id); - } - } node_key_hash_.erase(node->key); } RearrangeNode(); diff --git a/server/masterserver/svrmgr.h b/server/masterserver/svrmgr.h index aef1c8c..921b2a8 100644 --- a/server/masterserver/svrmgr.h +++ b/server/masterserver/svrmgr.h @@ -34,18 +34,15 @@ class SvrMgr : public a8::Singleton void _SS_WSP_RequestTargetServer(f8::MsgHdr& hdr, const ss::SS_WSP_RequestTargetServer& msg); void _SS_Ping(f8::MsgHdr& hdr, const ss::SS_Ping& msg); - void ___GSReport(f8::JsonHttpRequest* request); void ___GSList(f8::JsonHttpRequest* request); private: - SvrNode* GetNodeByTeamId(const std::string& team_id); SvrNode* AllocNode(); void RearrangeNode(); void ClearTimeOutNode(); private: - std::map team_hash_; std::map node_key_hash_; std::vector node_sorted_list_; };