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) {