修复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();
} else {
GSNode gs;
gs.key = key;
gs.node_id = node_id;
gs.instance_id = instance_id;
gs.online_num = online_num;
@ -86,6 +87,7 @@ void GSMgr::___GSReport(f8::JsonHttpRequest* request)
}
void GSMgr::___GSList(f8::JsonHttpRequest* request)
{
{
a8::MutableXObject* node_list = a8::MutableXObject::NewArray();
@ -107,6 +109,28 @@ void GSMgr::___GSList(f8::JsonHttpRequest* request)
request->resp_xobj->SetVal("node_list", *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)
{
@ -135,12 +159,20 @@ void GSMgr::RearrangeNode()
std::sort(node_sorted_list_.begin(), node_sorted_list_.end(),
[] (const GSNode* a, const GSNode* b)
{
if (a->servicing && b->servicing) {
return
!b->servicing ||
a->online_num < b->online_num ||
a->room_num < b->room_num ||
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 from_appid = 21; //from_appid
optional float atk_add = 22; //
optional string pre_settlement_info = 23; //game2001api预结算信息()
}
//