diff --git a/server/wsproxy/mastersvr.cc b/server/wsproxy/mastersvr.cc index 2073b66..fe9c160 100644 --- a/server/wsproxy/mastersvr.cc +++ b/server/wsproxy/mastersvr.cc @@ -6,6 +6,8 @@ #include "ss_msgid.pb.h" #include "mastersvr.h" #include +#include +#include #include #include #include "app.h" @@ -21,7 +23,11 @@ void MasterSvr::Init(int instance_id, const std::string& remote_ip, int remote_p recv_bufflen_ = 0; last_pong_tick = a8::XGetTickCount(); recv_buff_ = (char*) malloc(PACK_MAX * 2); +#if ASYNC_TCPCLIENT + tcp_client_ = a8::IoLoop::Instance()->CreateAsyncTcpClient(); +#else tcp_client_ = new a8::TcpClient(); +#endif tcp_client_->remote_address = remote_ip; tcp_client_->remote_port = remote_port; tcp_client_->on_error = std::bind(&MasterSvr::on_error, this, std::placeholders::_1, std::placeholders::_2); @@ -42,7 +48,11 @@ void MasterSvr::UnInit() a8::Timer::Instance()->DeleteTimer(timer_); timer_ = nullptr; tcp_client_->Close(); +#if ASYNC_TCPCLIENT + a8::IoLoop::Instance()->DestoryAsyncTcpClient(tcp_client_); +#else delete tcp_client_; +#endif tcp_client_ = nullptr; recv_bufflen_ = 0; free(recv_buff_); @@ -64,7 +74,11 @@ bool MasterSvr::Connected() return tcp_client_->Connected(); } +#if ASYNC_TCPCLIENT +void MasterSvr::on_error(a8::AsyncTcpClient* sender, int errorId) +#else void MasterSvr::on_error(a8::TcpClient* sender, int errorId) +#endif { a8::UdpLog::Instance()->Error("MasterSvr errorid=%d remote_ip:%s remote_port:%d", { @@ -74,13 +88,21 @@ void MasterSvr::on_error(a8::TcpClient* sender, int errorId) }); } +#if ASYNC_TCPCLIENT +void MasterSvr::on_connect(a8::AsyncTcpClient* sender) +#else void MasterSvr::on_connect(a8::TcpClient* sender) +#endif { recv_bufflen_ = 0; a8::UdpLog::Instance()->Info("masterserver connected", {}); } +#if ASYNC_TCPCLIENT +void MasterSvr::on_disconnect(a8::AsyncTcpClient* sender) +#else void MasterSvr::on_disconnect(a8::TcpClient* sender) +#endif { recv_bufflen_ = 0; a8::UdpLog::Instance()->Info("masterserver %d disconnected after 10s later reconnect", {instance_id}); @@ -90,7 +112,11 @@ void MasterSvr::on_disconnect(a8::TcpClient* sender) ); } +#if ASYNC_TCPCLIENT +void MasterSvr::on_socketread(a8::AsyncTcpClient* sender, char* buf, unsigned int len) +#else void MasterSvr::on_socketread(a8::TcpClient* sender, char* buf, unsigned int len) +#endif { #if 0 ++App::Instance()->perf.read_count; diff --git a/server/wsproxy/mastersvr.h b/server/wsproxy/mastersvr.h index 49d445b..ef9be25 100644 --- a/server/wsproxy/mastersvr.h +++ b/server/wsproxy/mastersvr.h @@ -5,6 +5,7 @@ namespace a8 { class TcpClient; + class AsyncTcpClient; } struct timer_list; @@ -32,16 +33,27 @@ class MasterSvr } private: + #if ASYNC_TCPCLIENT + void on_error(a8::AsyncTcpClient* sender, int errorId); + void on_connect(a8::AsyncTcpClient* sender); + void on_disconnect(a8::AsyncTcpClient* sender); + void on_socketread(a8::AsyncTcpClient* sender, char* buf, unsigned int len); + #else void on_error(a8::TcpClient* sender, int errorId); void on_connect(a8::TcpClient* sender); void on_disconnect(a8::TcpClient* sender); void on_socketread(a8::TcpClient* sender, char* buf, unsigned int len); + #endif void CheckAlive(); private: char *recv_buff_ = nullptr; unsigned int recv_bufflen_ = 0; + #if ASYNC_TCPCLIENT + a8::AsyncTcpClient* tcp_client_ = nullptr; + #else a8::TcpClient* tcp_client_ = nullptr; + #endif timer_list* timer_ = nullptr; }; diff --git a/third_party/a8engine b/third_party/a8engine index f9f17a6..6735810 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit f9f17a60fbef4174c2dd8ae406f742371b62421f +Subproject commit 67358105a4e2301c48f351d02fde1c59ef8a4a3e diff --git a/third_party/framework b/third_party/framework index 6210196..9ba2696 160000 --- a/third_party/framework +++ b/third_party/framework @@ -1 +1 @@ -Subproject commit 6210196bcda13489e2f691aa001de042ae61d9cb +Subproject commit 9ba2696e52664c9f5b7a1e09a4a5516359d330b0