diff --git a/server/masterserver/gsmgr.cc b/server/masterserver/gsmgr.cc index 63c1ad2..3330881 100644 --- a/server/masterserver/gsmgr.cc +++ b/server/masterserver/gsmgr.cc @@ -213,6 +213,16 @@ std::shared_ptr GSMgr::GetNodeByNodeKey(const std::string& node_key) return itr != node_key_hash_.end() ? itr->second : nullptr; } +std::shared_ptr GSMgr::GetNodeByInstanceId(int instance_id) +{ + for (auto& pair : node_key_hash_) { + if (pair.second->instance_id == instance_id) { + return pair.second; + } + } + return nullptr; +} + std::shared_ptr GSMgr::AllocNode() { std::vector>* sorted_nodes = GetSortedNodes(); diff --git a/server/masterserver/gsmgr.h b/server/masterserver/gsmgr.h index f5e0cf8..f8660aa 100644 --- a/server/masterserver/gsmgr.h +++ b/server/masterserver/gsmgr.h @@ -32,6 +32,7 @@ class GSMgr : public a8::Singleton private: std::shared_ptr GetNodeByTeamId(const std::string& team_id); std::shared_ptr GetNodeByNodeKey(const std::string& node_key); + std::shared_ptr GetNodeByInstanceId(int instance_id); std::shared_ptr AllocNode(); void RearrangeNode(); void AddNodeToSortedNodes(std::shared_ptr node);