diff --git a/server/gameserver/gamelog.cc b/server/gameserver/gamelog.cc index 455af46..ce89556 100644 --- a/server/gameserver/gamelog.cc +++ b/server/gameserver/gamelog.cc @@ -26,6 +26,8 @@ void GameLog::GameStart(Player* hum) prop->SetVal("nickname", hum->name); //prop->SetVal("localuuid", ""); //prop->SetVal("start_param", ""); + prop->SetVal("server_node_id", App::Instance()->node_id); + prop->SetVal("server_instance_id", App::Instance()->instance_id); prop->SetVal("map_id", hum->room->map_meta->i->map_id()); prop->SetVal("map_name", hum->room->map_meta->i->map_name()); @@ -57,6 +59,8 @@ void GameLog::GameEnd(Player* hum) //prop->SetVal("localuuid", ""); prop->SetVal("game_time", a8::XGetTickCount() - hum->create_tick); //prop->SetVal("start_param", ""); + prop->SetVal("server_node_id", App::Instance()->node_id); + prop->SetVal("server_instance_id", App::Instance()->instance_id); prop->SetVal("map_id", hum->room->map_meta->i->map_id()); prop->SetVal("map_name", hum->room->map_meta->i->map_name()); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 1ac8725..c82380c 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -152,6 +152,38 @@ void RoomMgr::ActiveRoom(long long room_uuid) void RoomMgr::ReportServerState(int instance_id, const std::string& host, int port) { + auto on_ok = [] (a8::XParams& param, a8::XObject& data) + { + a8::Timer::Instance()->AddDeadLineTimer(1000, + a8::XParams() + .SetSender(param.sender) + .SetParam1(param.param1) + .SetParam2(param.param2), + [] (const a8::XParams& param) + { + RoomMgr::Instance()->ReportServerState( + param.sender, + param.param1, + param.param2 + ); + }); + }; + auto on_error = [] (a8::XParams& param, const std::string& response) + { + a8::Timer::Instance()->AddDeadLineTimer(1000, + a8::XParams() + .SetSender(param.sender) + .SetParam1(param.param1) + .SetParam2(param.param2), + [] (const a8::XParams& param) + { + RoomMgr::Instance()->ReportServerState( + param.sender, + param.param1, + param.param2 + ); + }); + }; std::string url = a8::Format("http://%s:%d/webapp/index.php?c=GS&a=report&", { host, @@ -169,38 +201,8 @@ void RoomMgr::ReportServerState(int instance_id, const std::string& host, int po .SetSender(instance_id) .SetParam1(host) .SetParam2(port), - [] (a8::XParams& param, a8::XObject& data) - { - a8::Timer::Instance()->AddDeadLineTimer(1000, - a8::XParams() - .SetSender(param.sender) - .SetParam1(param.param1) - .SetParam2(param.param2), - [] (const a8::XParams& param) - { - RoomMgr::Instance()->ReportServerState( - param.sender, - param.param1, - param.param2 - ); - }); - }, - [] (a8::XParams& param, const std::string& response) - { - a8::Timer::Instance()->AddDeadLineTimer(1000, - a8::XParams() - .SetSender(param.sender) - .SetParam1(param.param1) - .SetParam2(param.param2), - [] (const a8::XParams& param) - { - RoomMgr::Instance()->ReportServerState( - param.sender, - param.param1, - param.param2 - ); - }); - }, + on_ok, + on_error, url.c_str(), *url_params, rand()