diff --git a/server/gameserver/httpproxy.cc b/server/gameserver/httpproxy.cc index 1cc443bf..d594d9f2 100644 --- a/server/gameserver/httpproxy.cc +++ b/server/gameserver/httpproxy.cc @@ -15,6 +15,7 @@ struct HttpProxyRequest { std::string req_id; + f8::HttpProxyCb cb; std::string url; a8::XObject url_params; long long add_tick = 0; @@ -39,13 +40,9 @@ static void _ProxyCallback(f8::JsonHttpRequest* request) } if (request->request.HasKey("errcode") && request->request.Get("errcode").GetInt() == 0) { - #if 0 - req->on_ok(req->param, data); - #endif + req->cb(true, &request->request, nullptr); } else { - #if 0 - req->on_error(req->param, data.Get("errmsg").GetString()); - #endif + req->cb(false, &request->request, nullptr); } HttpProxy::Instance()->DestoryRequest(req); } @@ -70,10 +67,7 @@ std::string HttpProxy::HttpGet( { std::shared_ptr request = std::make_shared(); request->req_id = CreateRequestId(); - #if 0 - request->param = param; - request->on_ok = on_ok; - request->on_error = on_error; + request->cb = cb; request->url = url; request->url_params = url_params; request->add_tick = a8::XGetTickCount(); @@ -95,44 +89,35 @@ std::string HttpProxy::HttpGet( std::string proxy_url; JsonDataMgr::Instance()->GetHttpProxyUrl(proxy_url); f8::HttpClientPool::Instance()->HttpGet - (a8::XParams() - .SetSender(request->req_id), - [] (a8::XParams& param, a8::XObject& data) + ( + [request] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { - std::shared_ptr req = HttpProxy::Instance()->GetRequest(param.sender.GetString()); - if (req) { - long long cost_time = a8::XGetTickCount() - req->add_tick; + long long cost_time = a8::XGetTickCount() - request->add_tick; + if (ok) { #ifdef DEBUG f8::UdpLog::Instance()->Debug("ProxyHttpGet ok cost_time:%d url:%s params:%s", { - cost_time, - req->url, - req->url_params.ToJsonStr(), + cost_time, + request->url, + request->url_params.ToJsonStr(), }); #endif - } - }, - [] (a8::XParams& param, const std::string& response) - { - std::shared_ptr req = HttpProxy::Instance()->GetRequest(param.sender.GetString()); - if (req) { - long long cost_time = a8::XGetTickCount() - req->add_tick; + } else { f8::UdpLog::Instance()->Warning("ProxyHttpGet error cost_time:%d url:%s params:%s response:%s", { - cost_time, - req->url, - req->url_params.ToJsonStr(), - response - }); - req->on_error(req->param, response); + cost_time, + request->url, + request->url_params.ToJsonStr(), + ctx->response + }); + request->cb(false, rsp_obj, ctx); + HttpProxy::Instance()->DestoryRequest(request); } - HttpProxy::Instance()->DestoryRequest(req); }, proxy_url.c_str(), *proxy_url_params, rand() % MAX_SYS_HTTP_NUM ); - #endif return request->req_id; } diff --git a/third_party/f8 b/third_party/f8 index 7f272dc6..74dfc2b9 160000 --- a/third_party/f8 +++ b/third_party/f8 @@ -1 +1 @@ -Subproject commit 7f272dc6b3c72839997921cfa1a78a0118eb504c +Subproject commit 74dfc2b9f910f757d57cca73f35909061417fba1