修复masterserver节点分配问题

This commit is contained in:
aozhiwei 2019-08-13 14:21:36 +08:00
parent 14f7e822d6
commit f94c2f2feb
2 changed files with 54 additions and 21 deletions

View File

@ -68,6 +68,7 @@ void GSMgr::___GSReport(f8::JsonHttpRequest* request)
itr->second.last_active_tick = a8::XGetTickCount(); itr->second.last_active_tick = a8::XGetTickCount();
} else { } else {
GSNode gs; GSNode gs;
gs.key = key;
gs.node_id = node_id; gs.node_id = node_id;
gs.instance_id = instance_id; gs.instance_id = instance_id;
gs.online_num = online_num; gs.online_num = online_num;
@ -87,6 +88,7 @@ void GSMgr::___GSReport(f8::JsonHttpRequest* request)
void GSMgr::___GSList(f8::JsonHttpRequest* request) void GSMgr::___GSList(f8::JsonHttpRequest* request)
{ {
{
a8::MutableXObject* node_list = a8::MutableXObject::NewArray(); a8::MutableXObject* node_list = a8::MutableXObject::NewArray();
for (auto& pair : node_key_hash_) { for (auto& pair : node_key_hash_) {
@ -106,6 +108,28 @@ void GSMgr::___GSList(f8::JsonHttpRequest* request)
request->resp_xobj->SetVal("errmsg", ""); request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("node_list", *node_list); request->resp_xobj->SetVal("node_list", *node_list);
delete node_list; delete node_list;
}
{
a8::MutableXObject* node_list = a8::MutableXObject::NewArray();
for (GSNode* gs_node : node_sorted_list_) {
a8::MutableXObject* node = a8::MutableXObject::NewObject();
node->SetVal("node_id", gs_node->node_id);
node->SetVal("instance_id", gs_node->instance_id);
node->SetVal("room_num", gs_node->room_num);
node->SetVal("online_num", gs_node->online_num);
node->SetVal("ip", gs_node->ip);
node->SetVal("port", gs_node->port);
node->SetVal("servicing", gs_node->servicing);
node_list->Push(*node);
delete node;
}
request->resp_xobj->SetVal("errcode", 0);
request->resp_xobj->SetVal("errmsg", "");
request->resp_xobj->SetVal("sorted_node_list", *node_list);
delete node_list;
}
} }
GSNode* GSMgr::GetNodeByTeamId(const std::string& team_id) GSNode* GSMgr::GetNodeByTeamId(const std::string& team_id)
@ -135,12 +159,20 @@ void GSMgr::RearrangeNode()
std::sort(node_sorted_list_.begin(), node_sorted_list_.end(), std::sort(node_sorted_list_.begin(), node_sorted_list_.end(),
[] (const GSNode* a, const GSNode* b) [] (const GSNode* a, const GSNode* b)
{ {
if (a->servicing && b->servicing) {
return return
!b->servicing ||
a->online_num < b->online_num || a->online_num < b->online_num ||
a->room_num < b->room_num || a->room_num < b->room_num ||
a->node_idx > b->node_idx; a->node_idx > b->node_idx;
} }
if (a->servicing) {
return true;
}
if (b->servicing) {
return false;
}
return a->node_idx > b->node_idx;
}
); );
} }

View File

@ -627,6 +627,7 @@ message CMJoin
optional string session_id = 20; //session_id optional string session_id = 20; //session_id
optional string from_appid = 21; //from_appid optional string from_appid = 21; //from_appid
optional float atk_add = 22; // optional float atk_add = 22; //
optional string pre_settlement_info = 23; //game2001api预结算信息()
} }
// //