diff --git a/server/wsproxy/master.cc b/server/wsproxy/master.cc index eda3a1b..616bfde 100644 --- a/server/wsproxy/master.cc +++ b/server/wsproxy/master.cc @@ -2,7 +2,11 @@ #include +#ifdef USE_ASIO +#include +#else #include +#endif #include #include @@ -24,9 +28,11 @@ void Master::Init(int instance_id, const std::string& remote_ip, int remote_port recv_bufflen_ = 0; last_pong_tick = a8::XGetTickCount(); recv_buff_ = (char*) malloc(PACK_MAX * 2); +#ifdef USE_ASIO + tcp_client_ = std::make_shared(remote_ip, remote_port); +#else tcp_client_ = std::make_shared(); - tcp_client_->remote_address = remote_ip; - tcp_client_->remote_port = remote_port; +#endif tcp_client_->on_error = std::bind(&Master::on_error, this, std::placeholders::_1, std::placeholders::_2); tcp_client_->on_connect = std::bind(&Master::on_connect, this, std::placeholders::_1); tcp_client_->on_disconnect = std::bind(&Master::on_disconnect, this, std::placeholders::_1); @@ -72,29 +78,45 @@ bool Master::Connected() return tcp_client_->Connected(); } +#ifdef USE_ASIO +void Master::on_error(a8::AsioTcpClient* sender, int errorId) +#else void Master::on_error(a8::TcpClient* sender, int errorId) +#endif { f8::UdpLog::Instance()->Error("Master errorid=%d remote_ip:%s remote_port:%d", { errorId, - sender->remote_address, - sender->remote_port + sender->GetRemoteAddress(), + sender->GetRemotePort() }); } +#ifdef USE_ASIO +void Master::on_connect(a8::AsioTcpClient* sender) +#else void Master::on_connect(a8::TcpClient* sender) +#endif { recv_bufflen_ = 0; f8::UdpLog::Instance()->Info("masterserver connected", {}); } +#ifdef USE_ASIO +void Master::on_disconnect(a8::AsioTcpClient* sender) +#else void Master::on_disconnect(a8::TcpClient* sender) +#endif { recv_bufflen_ = 0; f8::UdpLog::Instance()->Info("masterserver %d disconnected after 10s later reconnect", {instance_id}); } +#ifdef USE_ASIO +void Master::on_socketread(a8::AsioTcpClient* sender, char* buf, unsigned int len) +#else void Master::on_socketread(a8::TcpClient* sender, char* buf, unsigned int len) +#endif { #if 0 ++App::Instance()->perf.read_count; diff --git a/server/wsproxy/master.h b/server/wsproxy/master.h index f06cb8b..7a25ad0 100644 --- a/server/wsproxy/master.h +++ b/server/wsproxy/master.h @@ -5,6 +5,7 @@ namespace a8 { class TcpClient; + class AsioTcpClient; } class Master @@ -31,17 +32,28 @@ class Master } private: +#ifdef USE_ASIO + void on_error(a8::AsioTcpClient* sender, int errorId); + void on_connect(a8::AsioTcpClient* sender); + void on_disconnect(a8::AsioTcpClient* sender); + void on_socketread(a8::AsioTcpClient* 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; +#ifdef USE_ASIO + std::shared_ptr tcp_client_; +#else std::shared_ptr tcp_client_; +#endif f8::TimerWp timer_wp_; f8::Attacher attacher_; }; diff --git a/server/wsproxy/upstream.cc b/server/wsproxy/upstream.cc index bc7dce7..50853b1 100644 --- a/server/wsproxy/upstream.cc +++ b/server/wsproxy/upstream.cc @@ -33,12 +33,10 @@ void UpStream::Init(int instance_id, const std::string& remote_ip, int remote_po last_pong_tick = a8::XGetTickCount(); recv_buff_ = (char*) malloc(PACK_MAX * 2); #ifdef USE_ASIO - tcp_client_ = std::make_shared(); + tcp_client_ = std::make_shared(remote_ip, remote_port); #else tcp_client_ = std::make_shared(); #endif - tcp_client_->remote_address = remote_ip; - tcp_client_->remote_port = remote_port; tcp_client_->on_error = std::bind(&UpStream::on_error, this, std::placeholders::_1, std::placeholders::_2); tcp_client_->on_connect = std::bind(&UpStream::on_connect, this, std::placeholders::_1); tcp_client_->on_disconnect = std::bind(&UpStream::on_disconnect, this, std::placeholders::_1); @@ -165,8 +163,8 @@ void UpStream::on_error(a8::TcpClient* sender, int errorId) f8::UdpLog::Instance()->Error("target server errorid=%d remote_ip:%s remote_port:%d", { errorId, - sender->remote_address, - sender->remote_port + sender->GetRemoteAddress(), + sender->GetRemotePort() }); } @@ -179,8 +177,8 @@ void UpStream::on_connect(a8::TcpClient* sender) recv_bufflen_ = 0; f8::UdpLog::Instance()->Info("target server connected remote_ip:%s remote_port:%d", { - sender->remote_address, - sender->remote_port + sender->GetRemoteAddress(), + sender->GetRemotePort() }); f8::MsgQueue::Instance()->PostMsg ( @@ -205,8 +203,8 @@ void UpStream::on_disconnect(a8::TcpClient* sender) "remote_ip:%s remote_port:%d", { instance_id, - sender->remote_address, - sender->remote_port + sender->GetRemoteAddress(), + sender->GetRemotePort() }); f8::MsgQueue::Instance()->PostMsg ( diff --git a/third_party/a8 b/third_party/a8 index 60f3ef1..ed93a7c 160000 --- a/third_party/a8 +++ b/third_party/a8 @@ -1 +1 @@ -Subproject commit 60f3ef1f7c01c39af7f051e2181a56294f63e5ca +Subproject commit ed93a7c237ec1e0ac12fe324ff01fb097a9cb4b7 diff --git a/third_party/f8 b/third_party/f8 index e8e6a85..8a49aa6 160000 --- a/third_party/f8 +++ b/third_party/f8 @@ -1 +1 @@ -Subproject commit e8e6a85b8f00a248eea7aea80276c6f1afd98ef9 +Subproject commit 8a49aa65c8576cabe1672be55fc903a6b17e2c37