From 869ba41905bc5b74de90b9e89c4cca7f38df1119 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 27 May 2023 18:03:29 +0800 Subject: [PATCH] 1 --- server/robotserver/httpproxy.cc | 30 ++++++++++++++++++++---------- server/robotserver/httpproxy.h | 4 +++- server/robotserver/jsondatamgr.cc | 2 ++ server/robotserver/playermgr.cc | 29 ++++++++++++++++++++++++++--- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/server/robotserver/httpproxy.cc b/server/robotserver/httpproxy.cc index a94dce69..2fc283a4 100644 --- a/server/robotserver/httpproxy.cc +++ b/server/robotserver/httpproxy.cc @@ -27,34 +27,40 @@ struct HttpProxyRequest class HttpProxyPromise : public a8::Promise { public: - - HttpProxyPromise(const char* url, a8::XObject url_params) + 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 { - HttpProxy::Instance()->HttpGet + f8::HttpClientPool::Instance()->HttpGet ( [this, _self = shared_from_this()] - (bool ret, a8::XObject* xobj, f8::HttpContext* context) + (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { - std::shared_ptr data = std::make_shared(); - *data = *xobj; - SetResult({ret, data}); + *ret_ = ok; + if (ok) { + **rsp_ = *rsp_obj; + } DoDone(); }, url_.c_str(), - url_params_); + 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) @@ -175,7 +181,11 @@ void HttpProxy::DestoryRequest(std::shared_ptr request) } std::shared_ptr HttpProxy::CoHttpGet(const char* url, - a8::XObject url_params) + a8::XObject url_params, + bool* ret, + std::shared_ptr* rsp) { - return std::make_shared(url, url_params); + *ret = false; + *rsp = std::make_shared(); + return std::make_shared(url, url_params, ret, rsp); } diff --git a/server/robotserver/httpproxy.h b/server/robotserver/httpproxy.h index 1160ef8f..cd3aafd0 100644 --- a/server/robotserver/httpproxy.h +++ b/server/robotserver/httpproxy.h @@ -31,7 +31,9 @@ class HttpProxy : public a8::Singleton void DestoryRequest(std::shared_ptr request); std::shared_ptr CoHttpGet(const char* url, - a8::XObject url_params); + a8::XObject url_params, + bool* ret, + std::shared_ptr* rsp); private: diff --git a/server/robotserver/jsondatamgr.cc b/server/robotserver/jsondatamgr.cc index d1681d7a..c9a316a2 100644 --- a/server/robotserver/jsondatamgr.cc +++ b/server/robotserver/jsondatamgr.cc @@ -116,6 +116,8 @@ void JsonDataMgr::GetApiUrl(std::string& url) void JsonDataMgr::GetHttpProxyUrl(std::string& url) { + url = "http://192.168.100.21:8321/webapp/index.php?c=Proxy&a=get"; + return; if (httpproxy_cluster_json_.Size() > 0) { std::shared_ptr conf = httpproxy_cluster_json_.At(0); url = conf->At("url")->AsXValue().GetString(); diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index 8ab1ff56..030dfee4 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -1,15 +1,38 @@ #include "precompile.h" #include +#include +#include +#include +#include #include "playermgr.h" #include "player.h" - -#include -#include +#include "httpproxy.h" void PlayerMgr::Init() { + f8::CoMgr::Instance()->CreateCo + ( + [] (f8::Coroutine* co) + { + bool ret = false; + std::shared_ptr rsp; + co->CoAwait + (HttpProxy::Instance()->CoHttpGet + ( + "https://game2006-test.kingsome.cn/webapp/index.php?c=Ops&a=selfChecking&", + a8::XObject(), + &ret, + &rsp + ) + ); + if (ret) { + a8::XPrintf("rsp:%s\n", {rsp->ToJsonStr()}); + } else { + abort(); + } + }); } void PlayerMgr::UnInit()