This commit is contained in:
aozhiwei 2023-05-27 18:03:29 +08:00
parent ba2b5ee8d7
commit 869ba41905
4 changed files with 51 additions and 14 deletions

View File

@ -27,34 +27,40 @@ struct HttpProxyRequest
class HttpProxyPromise : public a8::Promise class HttpProxyPromise : public a8::Promise
{ {
public: public:
HttpProxyPromise(const char* url, a8::XObject url_params, bool* ret, std::shared_ptr<a8::XObject>* rsp)
HttpProxyPromise(const char* url, a8::XObject url_params)
{ {
url_ = url; url_ = url;
url_params_ = url_params; url_params_ = url_params;
ret_ = ret;
rsp_ = rsp;
} }
protected: protected:
virtual void DoAwait() override virtual void DoAwait() override
{ {
HttpProxy::Instance()->HttpGet f8::HttpClientPool::Instance()->HttpGet
( (
[this, _self = shared_from_this()] [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<a8::XObject> data = std::make_shared<a8::XObject>(); *ret_ = ok;
*data = *xobj; if (ok) {
SetResult({ret, data}); **rsp_ = *rsp_obj;
}
DoDone(); DoDone();
}, },
url_.c_str(), url_.c_str(),
url_params_); url_params_,
rand() % MAX_SYS_HTTP_NUM
);
} }
private: private:
std::string url_; std::string url_;
a8::XObject url_params_; a8::XObject url_params_;
bool* ret_ = nullptr;
std::shared_ptr<a8::XObject>* rsp_ = nullptr;
}; };
static void _ProxyCallback(std::shared_ptr<f8::JsonHttpRequest> request) static void _ProxyCallback(std::shared_ptr<f8::JsonHttpRequest> request)
@ -175,7 +181,11 @@ void HttpProxy::DestoryRequest(std::shared_ptr<HttpProxyRequest> request)
} }
std::shared_ptr<a8::Awaiter> HttpProxy::CoHttpGet(const char* url, std::shared_ptr<a8::Awaiter> HttpProxy::CoHttpGet(const char* url,
a8::XObject url_params) a8::XObject url_params,
bool* ret,
std::shared_ptr<a8::XObject>* rsp)
{ {
return std::make_shared<HttpProxyPromise>(url, url_params); *ret = false;
*rsp = std::make_shared<a8::XObject>();
return std::make_shared<HttpProxyPromise>(url, url_params, ret, rsp);
} }

View File

@ -31,7 +31,9 @@ class HttpProxy : public a8::Singleton<HttpProxy>
void DestoryRequest(std::shared_ptr<HttpProxyRequest> request); void DestoryRequest(std::shared_ptr<HttpProxyRequest> request);
std::shared_ptr<a8::Awaiter> CoHttpGet(const char* url, std::shared_ptr<a8::Awaiter> CoHttpGet(const char* url,
a8::XObject url_params); a8::XObject url_params,
bool* ret,
std::shared_ptr<a8::XObject>* rsp);
private: private:

View File

@ -116,6 +116,8 @@ void JsonDataMgr::GetApiUrl(std::string& url)
void JsonDataMgr::GetHttpProxyUrl(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) { if (httpproxy_cluster_json_.Size() > 0) {
std::shared_ptr<a8::XObject> conf = httpproxy_cluster_json_.At(0); std::shared_ptr<a8::XObject> conf = httpproxy_cluster_json_.At(0);
url = conf->At("url")->AsXValue().GetString(); url = conf->At("url")->AsXValue().GetString();

View File

@ -1,15 +1,38 @@
#include "precompile.h" #include "precompile.h"
#include <f8/udplog.h> #include <f8/udplog.h>
#include <f8/utils.h>
#include <f8/msgqueue.h>
#include <f8/comgr.h>
#include <f8/coroutine.h>
#include "playermgr.h" #include "playermgr.h"
#include "player.h" #include "player.h"
#include "httpproxy.h"
#include <f8/utils.h>
#include <f8/msgqueue.h>
void PlayerMgr::Init() void PlayerMgr::Init()
{ {
f8::CoMgr::Instance()->CreateCo
(
[] (f8::Coroutine* co)
{
bool ret = false;
std::shared_ptr<a8::XObject> 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() void PlayerMgr::UnInit()