区分用户和系统

This commit is contained in:
aozhiwei 2019-07-31 16:58:29 +08:00
parent 21332b63ad
commit c71e7fb8b5
2 changed files with 34 additions and 7 deletions

View File

@ -177,8 +177,14 @@ namespace f8
long long begin_tick = a8::XGetTickCount(); long long begin_tick = a8::XGetTickCount();
ret = a8::http::Get(finally_url, response, &node->headers, 10); ret = a8::http::Get(finally_url, response, &node->headers, 10);
long long end_tick = a8::XGetTickCount(); long long end_tick = a8::XGetTickCount();
if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_request_delay) { if (thread_id <= f8::HttpClientPool::Instance()->sys_num) {
f8::HttpClientPool::Instance()->max_request_delay = end_tick - begin_tick; if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_sys_request_delay) {
f8::HttpClientPool::Instance()->max_sys_request_delay = end_tick - begin_tick;
}
} else {
if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_user_request_delay) {
f8::HttpClientPool::Instance()->max_user_request_delay = end_tick - begin_tick;
}
} }
break; break;
} }
@ -187,8 +193,14 @@ namespace f8
long long begin_tick = a8::XGetTickCount(); long long begin_tick = a8::XGetTickCount();
ret = a8::http::Post(finally_url.c_str(), node->content, response, &node->headers, 10); ret = a8::http::Post(finally_url.c_str(), node->content, response, &node->headers, 10);
long long end_tick = a8::XGetTickCount(); long long end_tick = a8::XGetTickCount();
if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_request_delay) { if (thread_id <= f8::HttpClientPool::Instance()->sys_num) {
f8::HttpClientPool::Instance()->max_request_delay = end_tick - begin_tick; if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_sys_request_delay) {
f8::HttpClientPool::Instance()->max_sys_request_delay = end_tick - begin_tick;
}
} else {
if (end_tick - begin_tick > f8::HttpClientPool::Instance()->max_user_request_delay) {
f8::HttpClientPool::Instance()->max_user_request_delay = end_tick - begin_tick;
}
} }
break; break;
} }
@ -226,6 +238,7 @@ namespace f8
public: public:
int exec_async_http_msgid = 0; int exec_async_http_msgid = 0;
int thread_id = 0;
private: private:
volatile bool terminated = false; volatile bool terminated = false;
@ -304,6 +317,7 @@ namespace f8
for (int i = 0; i < thread_num; i++) { for (int i = 0; i < thread_num; i++) {
HttpThread *http_thread = new HttpThread(); HttpThread *http_thread = new HttpThread();
http_thread->exec_async_http_msgid = exec_async_http_msgid; http_thread->exec_async_http_msgid = exec_async_http_msgid;
http_thread->thread_id = i;
http_thread->Init(); http_thread->Init();
http_thread_pool.push_back(http_thread); http_thread_pool.push_back(http_thread);
} }
@ -414,8 +428,17 @@ namespace f8
#endif #endif
}; };
void HttpClientPool::Init(int thread_num) void HttpClientPool::Init(int thread_num, int sys_num, int user_num)
{ {
if (thread_num < 0 || sys_num < 0 || user_num < 0) {
abort();
}
if (thread_num != sys_num + user_num) {
abort();
}
this->thread_num = thread_num;
this->sys_num = sys_num;
this->user_num = user_num;
impl_ = new HttpClientPoolImpl(); impl_ = new HttpClientPoolImpl();
impl_->Init(); impl_->Init();
MsgQueue::Instance()->RegisterCallBack(impl_->exec_async_http_msgid, MsgQueue::Instance()->RegisterCallBack(impl_->exec_async_http_msgid,

View File

@ -14,10 +14,14 @@ namespace f8
friend class a8::Singleton<HttpClientPool>; friend class a8::Singleton<HttpClientPool>;
public: public:
volatile long long max_request_delay = 0; volatile long long max_sys_request_delay = 0;
volatile long long max_user_request_delay = 0;
volatile int thread_num = 0;
volatile int sys_num = 0;
volatile int user_num = 0;
public: public:
void Init(int thread_num); void Init(int thread_num, int sys_num, int user_num);
void UnInit(); void UnInit();
//执行异步http get //执行异步http get