This commit is contained in:
aozhiwei 2022-03-24 13:43:26 +08:00
parent a1204c1dca
commit 979806c56c

View File

@ -778,7 +778,7 @@ void RoomMgr::SendGetBattleData(std::vector<std::shared_ptr<cs::CMJoin>>& join_m
if (join_msgs.empty()) { if (join_msgs.empty()) {
abort(); abort();
} }
std::vector<BattleDataContext> result; std::shared_ptr<std::vector<BattleDataContext>> result = std::make_shared<std::vector<BattleDataContext>>();
bool is_old_version = false; bool is_old_version = false;
for (auto& msg : join_msgs) { for (auto& msg : join_msgs) {
if (msg->proto_version() < 2022032201) { if (msg->proto_version() < 2022032201) {
@ -787,11 +787,12 @@ void RoomMgr::SendGetBattleData(std::vector<std::shared_ptr<cs::CMJoin>>& join_m
} }
BattleDataContext context; BattleDataContext context;
context.join_msg = msg; context.join_msg = msg;
result.push_back(context); result->push_back(context);
} }
if (is_old_version) { if (is_old_version) {
cb(result); cb(*result);
} }
{
std::string url; std::string url;
JsonDataMgr::Instance()->GetApiUrl(url); JsonDataMgr::Instance()->GetApiUrl(url);
if (!f8::IsOnlineEnv()) { if (!f8::IsOnlineEnv()) {
@ -809,15 +810,31 @@ void RoomMgr::SendGetBattleData(std::vector<std::shared_ptr<cs::CMJoin>>& join_m
a8::MutableXObject* url_params = a8::MutableXObject::NewObject(); a8::MutableXObject* url_params = a8::MutableXObject::NewObject();
HttpProxy::Instance()->HttpGet HttpProxy::Instance()->HttpGet
( (
a8::XParams(), a8::XParams()
.SetSender(new std::shared_ptr<std::vector<BattleDataContext>>(result))
.SetParam1(new std::function<
void(std::vector<BattleDataContext>&)>(cb)),
[] (a8::XParams& param, a8::XObject& data) [] (a8::XParams& param, a8::XObject& data)
{ {
auto result = (std::shared_ptr<std::vector<BattleDataContext>>*)param.sender.GetUserData();
auto cb = (std::function<
void(std::vector<BattleDataContext>&)>*)param.param1.GetUserData();
(*cb)(*result->get());
delete cb;
delete result;
}, },
[] (a8::XParams& param, const std::string& response) [] (a8::XParams& param, const std::string& response)
{ {
auto result = (std::shared_ptr<std::vector<BattleDataContext>>*)param.sender.GetUserData();
auto cb = (std::function<
void(std::vector<BattleDataContext>&)>*)param.param1.GetUserData();
(*cb)(*result->get());
delete cb;
delete result;
}, },
url.c_str(), url.c_str(),
*url_params *url_params
); );
delete url_params; delete url_params;
}
} }