From 979806c56c9d7c480e57eadc6057e98f53f47011 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 24 Mar 2022 13:43:26 +0800 Subject: [PATCH] 1 --- server/gameserver/roommgr.cc | 73 ++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 7c9902ca..9b1b2b39 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -778,7 +778,7 @@ void RoomMgr::SendGetBattleData(std::vector>& join_m if (join_msgs.empty()) { abort(); } - std::vector result; + std::shared_ptr> result = std::make_shared>(); bool is_old_version = false; for (auto& msg : join_msgs) { if (msg->proto_version() < 2022032201) { @@ -787,37 +787,54 @@ void RoomMgr::SendGetBattleData(std::vector>& join_m } BattleDataContext context; context.join_msg = msg; - result.push_back(context); + result->push_back(context); } if (is_old_version) { - cb(result); + cb(*result); } - std::string url; - JsonDataMgr::Instance()->GetApiUrl(url); - if (!f8::IsOnlineEnv()) { + { + std::string url; + JsonDataMgr::Instance()->GetApiUrl(url); + if (!f8::IsOnlineEnv()) { #ifdef DEBUG - if (!is_old_version) { - url = "https://game2006api-test.kingsome.cn/new/webapp/index.php"; - } + if (!is_old_version) { + url = "https://game2006api-test.kingsome.cn/new/webapp/index.php"; + } #endif + } + if (url.find('?') != std::string::npos) { + url += "c=Battle&a=getBattleData"; + } else { + url += "?c=Battle&a=getBattleData"; + } + a8::MutableXObject* url_params = a8::MutableXObject::NewObject(); + HttpProxy::Instance()->HttpGet + ( + a8::XParams() + .SetSender(new std::shared_ptr>(result)) + .SetParam1(new std::function< + void(std::vector&)>(cb)), + [] (a8::XParams& param, a8::XObject& data) + { + auto result = (std::shared_ptr>*)param.sender.GetUserData(); + auto cb = (std::function< + void(std::vector&)>*)param.param1.GetUserData(); + (*cb)(*result->get()); + delete cb; + delete result; + }, + [] (a8::XParams& param, const std::string& response) + { + auto result = (std::shared_ptr>*)param.sender.GetUserData(); + auto cb = (std::function< + void(std::vector&)>*)param.param1.GetUserData(); + (*cb)(*result->get()); + delete cb; + delete result; + }, + url.c_str(), + *url_params + ); + delete url_params; } - if (url.find('?') != std::string::npos) { - url += "c=Battle&a=getBattleData"; - } else { - url += "?c=Battle&a=getBattleData"; - } - a8::MutableXObject* url_params = a8::MutableXObject::NewObject(); - HttpProxy::Instance()->HttpGet - ( - a8::XParams(), - [] (a8::XParams& param, a8::XObject& data) - { - }, - [] (a8::XParams& param, const std::string& response) - { - }, - url.c_str(), - *url_params - ); - delete url_params; }