From 72dd914c791828c5533878a0f7d4d7a485707c4e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 4 Jul 2020 21:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/masterserver/svrmgr.cc | 47 ++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/server/masterserver/svrmgr.cc b/server/masterserver/svrmgr.cc index fcb8ffb..84461b0 100644 --- a/server/masterserver/svrmgr.cc +++ b/server/masterserver/svrmgr.cc @@ -96,6 +96,20 @@ void SvrMgr::_SS_IM_ReportServerInfo(f8::MsgHdr& hdr, const ss::SS_IM_ReportServ svr->port = msg.port(); svr->servicing = msg.servicing(); svr->last_active_tick = a8::XGetTickCount(); + a8::UdpLog::Instance()->Info + ( + "register new node socket_handle:%d node_idx:%d instance_id:%d " + "ip:%s port:%d online_num:%d servicing:%d", + { + svr->socket_handle, + svr->node_idx, + svr->instance_id, + svr->ip, + svr->port, + svr->online_num, + svr->servicing + } + ); node_key_hash_[key] = svr; socket_hash_[hdr.socket_handle] = svr; node_sorted_list_.push_back(svr); @@ -182,16 +196,15 @@ SvrNode* SvrMgr::AllocNode(const std::string& account_id) if (friend_data && friend_data->svr_node) { return friend_data->svr_node; } - if (node_sorted_list_.empty()) { - return nullptr; - } - size_t rnd = std::min((size_t)2, node_sorted_list_.size()); - int idx = rand() % rnd; - while (idx >= 0) { - if (node_sorted_list_[idx]->servicing) { - return node_sorted_list_[idx]; + if (!node_sorted_list_.empty()) { + size_t rnd = std::min((size_t)2, node_sorted_list_.size()); + int idx = rand() % rnd; + while (idx >= 0) { + if (node_sorted_list_[idx]->servicing) { + return node_sorted_list_[idx]; + } + --idx; } - --idx; } a8::UdpLog::Instance()->Warning("节点分配失败 node_sorted_list.size:%d node_list.size:%d", { @@ -257,6 +270,22 @@ SvrNode* SvrMgr::GetNodeBySocket(int socket_handle) void SvrMgr::RemoveNode(SvrNode* svr_node) { + { + a8::UdpLog::Instance()->Warning + ( + "remove node socket_handle:%d node_idx:%d instance_id:%d " + "ip:%s port:%d online_num:%d servicing:%d", + { + svr_node->socket_handle, + svr_node->node_idx, + svr_node->instance_id, + svr_node->ip, + svr_node->port, + svr_node->online_num, + svr_node->servicing + } + ); + } { for (size_t i = 0; i < node_sorted_list_.size(); ++i) { if (node_sorted_list_[i] == svr_node) {