This commit is contained in:
azw 2023-05-06 14:31:17 +00:00
parent a19a9dd588
commit 4a00d82cd6
5 changed files with 47 additions and 15 deletions

View File

@ -2,7 +2,11 @@
#include <string.h>
#ifdef USE_ASIO
#include <a8/asiotcpclient.h>
#else
#include <a8/tcpclient.h>
#endif
#include <f8/udplog.h>
#include <f8/timer.h>
@ -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<a8::AsioTcpClient>(remote_ip, remote_port);
#else
tcp_client_ = std::make_shared<a8::TcpClient>();
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;

View File

@ -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<a8::AsioTcpClient> tcp_client_;
#else
std::shared_ptr<a8::TcpClient> tcp_client_;
#endif
f8::TimerWp timer_wp_;
f8::Attacher attacher_;
};

View File

@ -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<a8::AsioTcpClient>();
tcp_client_ = std::make_shared<a8::AsioTcpClient>(remote_ip, remote_port);
#else
tcp_client_ = std::make_shared<a8::TcpClient>();
#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
(

2
third_party/a8 vendored

@ -1 +1 @@
Subproject commit 60f3ef1f7c01c39af7f051e2181a56294f63e5ca
Subproject commit ed93a7c237ec1e0ac12fe324ff01fb097a9cb4b7

2
third_party/f8 vendored

@ -1 +1 @@
Subproject commit e8e6a85b8f00a248eea7aea80276c6f1afd98ef9
Subproject commit 8a49aa65c8576cabe1672be55fc903a6b17e2c37