diff --git a/server/masterserver/gsmgr.cc b/server/masterserver/gsmgr.cc index f827c87..67836d0 100644 --- a/server/masterserver/gsmgr.cc +++ b/server/masterserver/gsmgr.cc @@ -84,17 +84,17 @@ void GSMgr::_SS_Ping(f8::MsgHdr& hdr, const ss::SS_Ping& msg) GGListener::Instance()->SendMsg(hdr.socket_handle, pongmsg); } -void GSMgr::___GSReport(f8::JsonHttpRequest* request) +void GSMgr::___GSReport(std::shared_ptr request) { - std::string ip = request->params->Get("ip"); - int port = request->params->Get("port"); - int alive_count = request->params->Get("alive_count"); - int online_num = request->params->Get("online_num"); - int room_num = request->params->Get("room_num"); - int instance_id = request->params->Get("instance_id"); - int node_id = request->params->Get("node_id"); - int version = request->params->Get("version"); - bool servicing = request->params->Get("servicing"); + std::string ip = request->GetParams()->Get("ip"); + int port = request->GetParams()->Get("port"); + int alive_count = request->GetParams()->Get("alive_count"); + int online_num = request->GetParams()->Get("online_num"); + int room_num = request->GetParams()->Get("room_num"); + int instance_id = request->GetParams()->Get("instance_id"); + int node_id = request->GetParams()->Get("node_id"); + int version = request->GetParams()->Get("version"); + bool servicing = request->GetParams()->Get("servicing"); std::string key = ip + ":" + a8::XValue(port).GetString(); auto itr = node_key_hash_.find(key); @@ -135,11 +135,11 @@ void GSMgr::___GSReport(f8::JsonHttpRequest* request) RearrangeNode(); } - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); + request->GetResp()->SetVal("errcode", 0); + request->GetResp()->SetVal("errmsg", ""); } -void GSMgr::___GSList(f8::JsonHttpRequest* request) +void GSMgr::___GSList(std::shared_ptr request) { { auto node_list = a8::MutableXObject::CreateArray(); @@ -158,9 +158,9 @@ void GSMgr::___GSList(f8::JsonHttpRequest* request) node_list->Push(*node); } - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); - request->resp_xobj->SetVal("node_list", *node_list); + request->GetResp()->SetVal("errcode", 0); + request->GetResp()->SetVal("errmsg", ""); + request->GetResp()->SetVal("node_list", *node_list); } { auto node_list = a8::MutableXObject::CreateArray(); @@ -180,9 +180,9 @@ void GSMgr::___GSList(f8::JsonHttpRequest* request) } } - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); - request->resp_xobj->SetVal("sorted_node_list", *node_list); + request->GetResp()->SetVal("errcode", 0); + request->GetResp()->SetVal("errmsg", ""); + request->GetResp()->SetVal("sorted_node_list", *node_list); } } diff --git a/server/masterserver/gsmgr.h b/server/masterserver/gsmgr.h index 1579e0f..0507938 100644 --- a/server/masterserver/gsmgr.h +++ b/server/masterserver/gsmgr.h @@ -26,8 +26,8 @@ class GSMgr : public a8::Singleton void _SS_WSP_RequestTargetServer(f8::MsgHdr& hdr, const ss::SS_WSP_RequestTargetServer& msg); void _SS_Ping(f8::MsgHdr& hdr, const ss::SS_Ping& msg); - void ___GSReport(f8::JsonHttpRequest* request); - void ___GSList(f8::JsonHttpRequest* request); + void ___GSReport(std::shared_ptr request); + void ___GSList(std::shared_ptr request); private: std::shared_ptr GetNodeByTeamId(const std::string& team_id); diff --git a/server/masterserver/handlermgr.cc b/server/masterserver/handlermgr.cc index b71241a..76753d7 100644 --- a/server/masterserver/handlermgr.cc +++ b/server/masterserver/handlermgr.cc @@ -11,13 +11,13 @@ #include "ss_proto.pb.h" -static void _GMOpsSelfChecking(f8::JsonHttpRequest* request) +static void _GMOpsSelfChecking(std::shared_ptr request) { - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); - request->resp_xobj->SetVal("healthy", 1); - request->resp_xobj->SetVal("max_rundelay", App::Instance()->perf.max_run_delay_time); - request->resp_xobj->SetVal("max_timer_idle", App::Instance()->perf.max_timer_idle); + request->GetResp()->SetVal("errcode", 0); + request->GetResp()->SetVal("errmsg", ""); + request->GetResp()->SetVal("healthy", 1); + request->GetResp()->SetVal("max_rundelay", App::Instance()->perf.max_run_delay_time); + request->GetResp()->SetVal("max_timer_idle", App::Instance()->perf.max_timer_idle); } void HandlerMgr::Init() @@ -25,12 +25,12 @@ void HandlerMgr::Init() RegisterNetMsgHandlers(); RegisterGMMsgHandler("Ops@selfChecking", _GMOpsSelfChecking); RegisterGMMsgHandler("GS@report", - [] (f8::JsonHttpRequest* request) + [] (std::shared_ptr request) { GSMgr::Instance()->___GSReport(request); }); RegisterGMMsgHandler("GS@list", - [] (f8::JsonHttpRequest* request) + [] (std::shared_ptr request) { GSMgr::Instance()->___GSList(request); }); @@ -60,29 +60,24 @@ void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle, std::string msgname = a8::Get(request, "c").GetString() + "@" + a8::Get(request, "a").GetString(); auto itr = gmhandlers_.find(msgname); if (itr != gmhandlers_.end()) { - f8::JsonHttpRequest* request = new f8::JsonHttpRequest; - request->saddr = saddr; - request->socket_handle = sockhandle; - request->query_str = querystr; - request->params->ReadFromUrlQueryString(querystr); - request->resp_xobj->SetVal("errcode", 0); - request->resp_xobj->SetVal("errmsg", ""); + auto request = std::make_shared + ( + saddr, + url, + querystr, + [sockhandle] (const a8::Args& args) + { + std::string data = args.Get(0); + GGListener::Instance()->SendText(sockhandle, a8::HttpResponse(data)); + }); itr->second(request); - - if (!request->pending){ - std::string response; - request->resp_xobj->ToJsonStr(response); - GGListener::Instance()->SendText(sockhandle, a8::HttpResponse(response)); - - delete request; - } } else { GGListener::Instance()->SendText(sockhandle, a8::HttpResponse("{}")); } } void HandlerMgr::RegisterGMMsgHandler(const std::string& msgname, - void (*handler)(f8::JsonHttpRequest*)) + void (*handler)(std::shared_ptr)) { gmhandlers_[msgname] = handler; } diff --git a/server/masterserver/handlermgr.h b/server/masterserver/handlermgr.h index fb4d63b..8bbeeff 100644 --- a/server/masterserver/handlermgr.h +++ b/server/masterserver/handlermgr.h @@ -29,7 +29,7 @@ class HandlerMgr : public a8::Singleton private: void RegisterNetMsgHandlers(); void RegisterGMMsgHandler(const std::string& msgname, - void (*)(f8::JsonHttpRequest*)); + void (*)(std::shared_ptr)); - std::map gmhandlers_; + std::map)> gmhandlers_; }; diff --git a/third_party/f8 b/third_party/f8 index ae2a2bc..5954fb5 160000 --- a/third_party/f8 +++ b/third_party/f8 @@ -1 +1 @@ -Subproject commit ae2a2bcddbacf26d0ba2f1be7c95ee9e20ce3023 +Subproject commit 5954fb5fcbf28bdeb16490ced77999daf2c0d73d