From 827e95aa8de01e49c8238cbde35283da477e5c4a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 15 Aug 2024 16:46:21 +0800 Subject: [PATCH] 1 --- server/robotserver/android_agent.cc | 4 +- server/robotserver/httpproxy.cc | 201 +--------------------------- server/robotserver/httpproxy.h | 47 +------ server/robotserver/jsondatamgr.cc | 1 + server/robotserver/jsondatamgr.h | 1 + server/robotserver/playermgr.cc | 2 +- 6 files changed, 7 insertions(+), 249 deletions(-) mode change 100644 => 120000 server/robotserver/httpproxy.cc mode change 100644 => 120000 server/robotserver/httpproxy.h create mode 120000 server/robotserver/jsondatamgr.cc create mode 120000 server/robotserver/jsondatamgr.h diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 498e676f..46165b0d 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -110,7 +110,7 @@ behaviac::EBTStatus AndroidAgent::CoLogin() } }, "https://game2006api-test.kingsome.cn/webapp/index.php", - *url_params + url_params ); } else { context->login_ok = false; @@ -118,7 +118,7 @@ behaviac::EBTStatus AndroidAgent::CoLogin() } }, "https://login-test.kingsome.cn/webapp/index.php", - *url_params + url_params ); } co->runing_cb = diff --git a/server/robotserver/httpproxy.cc b/server/robotserver/httpproxy.cc deleted file mode 100644 index 40833398..00000000 --- a/server/robotserver/httpproxy.cc +++ /dev/null @@ -1,200 +0,0 @@ -#include "precompile.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include "httpproxy.h" -#include "app.h" -#include "handlermgr.h" - -#include "f8/httpclientpool.h" - -struct HttpProxyRequest -{ - std::string req_id; - f8::HttpProxyCb cb; - std::string url; - a8::XObject url_params; - long long add_tick = 0; -}; - -class HttpProxyPromise : public a8::Promise -{ - public: - HttpProxyPromise(const char* url, a8::XObject url_params, bool* ret, std::shared_ptr* rsp) - { - url_ = url; - url_params_ = url_params; - ret_ = ret; - rsp_ = rsp; - } - -protected: - - virtual void DoAwait() override - { - f8::HttpClientPool::Instance()->HttpGet - ( - [this, _self = shared_from_this()] - (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) - { - *ret_ = ok; - if (ok) { - **rsp_ = *rsp_obj; - } - DoDone(); - }, - url_.c_str(), - url_params_, - rand() % MAX_SYS_HTTP_NUM - ); - } - - private: - std::string url_; - a8::XObject url_params_; - bool* ret_ = nullptr; - std::shared_ptr* rsp_ = nullptr; -}; - -static void _ProxyCallback(std::shared_ptr request) -{ - #ifdef MYDEBUG - #if 0 - f8::UdpLog::Instance()->Debug("ProxyCallbBack request:%s", - { - request->GetParams()->ToJsonStr() - }); - #endif - #endif - std::string seq_id = request->GetParams()->Get("seq_id"); - std::shared_ptr req = HttpProxy::Instance()->GetRequest(seq_id); - if (req) { - a8::XObject data; - - data.ReadFromJsonString(request->GetParams()->Get("data").GetString()); - if (data.GetType() == a8::XOT_SIMPLE) { - data.ReadFromJsonString("{}"); - } - f8::HttpContext ctx; - if (request->GetParams()->HasKey("errcode") && - request->GetParams()->Get("errcode").GetInt() == 0) { - req->cb(true, &data, &ctx); - } else { - req->cb(false, request->GetParams().get(), &ctx); - } - HttpProxy::Instance()->DestoryRequest(req); - } -} - -void HttpProxy::Init() -{ - request_prefix_ = "robot2006_" + a8::XValue(a8::GetMilliSecond()).GetString() + "_"; - HandlerMgr::Instance()->RegisterGMMsgHandler("Proxy@callback", _ProxyCallback); -} - -void HttpProxy::UnInit() -{ - -} - -std::string HttpProxy::HttpGet( - f8::HttpProxyCb cb, - const char* url, - a8::XObject url_params - ) -{ - std::shared_ptr request = std::make_shared(); - request->req_id = CreateRequestId(); - request->cb = cb; - request->url = url; - request->url_params = url_params; - request->add_tick = a8::XGetTickCount(); - if (request_hash_.find(request->req_id) != request_hash_.end()) { - abort(); - } - request_hash_[request->req_id] = request; - - std::string local_ip; - a8::GetLocalIp(local_ip); - auto proxy_url_params = a8::MutableXObject::CreateObject(); - proxy_url_params->SetVal("seq_id", request->req_id); - proxy_url_params->SetVal("target_url", std::string(url)); - proxy_url_params->SetVal("params", url_params.ToJsonStr()); - proxy_url_params->SetVal - ("cb_url", - a8::Format("http://%s:%d/webapp/index.php?c=Proxy&a=callback", - { - local_ip, - 3333 - })); - std::string proxy_url = "http://192.168.100.21:8321/webapp/index.php?c=Proxy&a=get"; - if (f8::IsTestEnv()) { - proxy_url = "http://127.0.0.1:8321/webapp/index.php?c=Proxy&a=get"; - } - f8::HttpClientPool::Instance()->HttpGet - ( - [request] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) - { - long long cost_time = a8::XGetTickCount() - request->add_tick; - if (ok) { -#ifdef MYDEBUG - #if 0 - f8::UdpLog::Instance()->Debug("ProxyHttpGet ok cost_time:%d url:%s params:%s", - { - cost_time, - request->url, - request->url_params.ToJsonStr(), - }); - #endif -#endif - } else { - f8::UdpLog::Instance()->Warning("ProxyHttpGet error cost_time:%d url:%s params:%s response:%s", - { - cost_time, - request->url, - request->url_params.ToJsonStr(), - ctx->response - }); - request->cb(false, rsp_obj, ctx); - HttpProxy::Instance()->DestoryRequest(request); - } - }, - proxy_url.c_str(), - *proxy_url_params, - rand() % MAX_SYS_HTTP_NUM - ); - return request->req_id; -} - -std::string HttpProxy::CreateRequestId() -{ - return request_prefix_ + f8::App::Instance()->NewGlobalUuid(); -} - -std::shared_ptr HttpProxy::GetRequest(const std::string& req_id) -{ - auto itr = request_hash_.find(req_id); - return itr != request_hash_.end() ? itr->second : nullptr; -} - -void HttpProxy::DestoryRequest(std::shared_ptr request) -{ - request_hash_.erase(request->req_id); -} - -std::shared_ptr HttpProxy::CoHttpGet(const char* url, - a8::XObject url_params, - bool* ret, - std::shared_ptr* rsp) -{ - *ret = false; - *rsp = std::make_shared(); - return std::make_shared(url, url_params, ret, rsp); -} diff --git a/server/robotserver/httpproxy.cc b/server/robotserver/httpproxy.cc new file mode 120000 index 00000000..da2b2689 --- /dev/null +++ b/server/robotserver/httpproxy.cc @@ -0,0 +1 @@ +../gameserver/httpproxy.cc \ No newline at end of file diff --git a/server/robotserver/httpproxy.h b/server/robotserver/httpproxy.h deleted file mode 100644 index cd3aafd0..00000000 --- a/server/robotserver/httpproxy.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include - -#include "f8/httpclientpool.h" - -namespace a8 -{ - class Awaiter; -} - -struct HttpProxyRequest; -class HttpProxy : public a8::Singleton -{ - - private: - HttpProxy() {}; - friend class a8::Singleton; - - public: - - void Init(); - void UnInit(); - - std::string HttpGet( - f8::HttpProxyCb cb, - const char* url, - a8::XObject url_params - ); - std::shared_ptr GetRequest(const std::string& req_id); - void DestoryRequest(std::shared_ptr request); - - std::shared_ptr CoHttpGet(const char* url, - a8::XObject url_params, - bool* ret, - std::shared_ptr* rsp); - - private: - - std::string CreateRequestId(); - - private: - std::map> request_hash_; - std::string request_prefix_; - -}; diff --git a/server/robotserver/httpproxy.h b/server/robotserver/httpproxy.h new file mode 120000 index 00000000..08310b2b --- /dev/null +++ b/server/robotserver/httpproxy.h @@ -0,0 +1 @@ +../gameserver/httpproxy.h \ No newline at end of file diff --git a/server/robotserver/jsondatamgr.cc b/server/robotserver/jsondatamgr.cc new file mode 120000 index 00000000..b018ca30 --- /dev/null +++ b/server/robotserver/jsondatamgr.cc @@ -0,0 +1 @@ +../gameserver/jsondatamgr.cc \ No newline at end of file diff --git a/server/robotserver/jsondatamgr.h b/server/robotserver/jsondatamgr.h new file mode 120000 index 00000000..4aa9fed7 --- /dev/null +++ b/server/robotserver/jsondatamgr.h @@ -0,0 +1 @@ +../gameserver/jsondatamgr.h \ No newline at end of file diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index bd140632..148e433c 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -21,7 +21,7 @@ void PlayerMgr::Init() int count = 0; f8::Timer::Instance()->SetInterval ( - 200, + 1, [this, count] (int et, const a8::Args* args) mutable { if (et == a8::TIMER_EXEC_EVENT) {