1
This commit is contained in:
parent
a19a9dd588
commit
4a00d82cd6
@ -2,7 +2,11 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef USE_ASIO
|
||||||
|
#include <a8/asiotcpclient.h>
|
||||||
|
#else
|
||||||
#include <a8/tcpclient.h>
|
#include <a8/tcpclient.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <f8/udplog.h>
|
#include <f8/udplog.h>
|
||||||
#include <f8/timer.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;
|
recv_bufflen_ = 0;
|
||||||
last_pong_tick = a8::XGetTickCount();
|
last_pong_tick = a8::XGetTickCount();
|
||||||
recv_buff_ = (char*) malloc(PACK_MAX * 2);
|
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_ = std::make_shared<a8::TcpClient>();
|
||||||
tcp_client_->remote_address = remote_ip;
|
#endif
|
||||||
tcp_client_->remote_port = remote_port;
|
|
||||||
tcp_client_->on_error = std::bind(&Master::on_error, this, std::placeholders::_1, std::placeholders::_2);
|
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_connect = std::bind(&Master::on_connect, this, std::placeholders::_1);
|
||||||
tcp_client_->on_disconnect = std::bind(&Master::on_disconnect, 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();
|
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)
|
void Master::on_error(a8::TcpClient* sender, int errorId)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
f8::UdpLog::Instance()->Error("Master errorid=%d remote_ip:%s remote_port:%d",
|
f8::UdpLog::Instance()->Error("Master errorid=%d remote_ip:%s remote_port:%d",
|
||||||
{
|
{
|
||||||
errorId,
|
errorId,
|
||||||
sender->remote_address,
|
sender->GetRemoteAddress(),
|
||||||
sender->remote_port
|
sender->GetRemotePort()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_ASIO
|
||||||
|
void Master::on_connect(a8::AsioTcpClient* sender)
|
||||||
|
#else
|
||||||
void Master::on_connect(a8::TcpClient* sender)
|
void Master::on_connect(a8::TcpClient* sender)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
recv_bufflen_ = 0;
|
recv_bufflen_ = 0;
|
||||||
f8::UdpLog::Instance()->Info("masterserver connected", {});
|
f8::UdpLog::Instance()->Info("masterserver connected", {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_ASIO
|
||||||
|
void Master::on_disconnect(a8::AsioTcpClient* sender)
|
||||||
|
#else
|
||||||
void Master::on_disconnect(a8::TcpClient* sender)
|
void Master::on_disconnect(a8::TcpClient* sender)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
recv_bufflen_ = 0;
|
recv_bufflen_ = 0;
|
||||||
f8::UdpLog::Instance()->Info("masterserver %d disconnected after 10s later reconnect", {instance_id});
|
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)
|
void Master::on_socketread(a8::TcpClient* sender, char* buf, unsigned int len)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
++App::Instance()->perf.read_count;
|
++App::Instance()->perf.read_count;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
namespace a8
|
namespace a8
|
||||||
{
|
{
|
||||||
class TcpClient;
|
class TcpClient;
|
||||||
|
class AsioTcpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Master
|
class Master
|
||||||
@ -31,17 +32,28 @@ class Master
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
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_error(a8::TcpClient* sender, int errorId);
|
||||||
void on_connect(a8::TcpClient* sender);
|
void on_connect(a8::TcpClient* sender);
|
||||||
void on_disconnect(a8::TcpClient* sender);
|
void on_disconnect(a8::TcpClient* sender);
|
||||||
void on_socketread(a8::TcpClient* sender, char* buf, unsigned int len);
|
void on_socketread(a8::TcpClient* sender, char* buf, unsigned int len);
|
||||||
|
#endif
|
||||||
|
|
||||||
void CheckAlive();
|
void CheckAlive();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *recv_buff_ = nullptr;
|
char *recv_buff_ = nullptr;
|
||||||
unsigned int recv_bufflen_ = 0;
|
unsigned int recv_bufflen_ = 0;
|
||||||
|
#ifdef USE_ASIO
|
||||||
|
std::shared_ptr<a8::AsioTcpClient> tcp_client_;
|
||||||
|
#else
|
||||||
std::shared_ptr<a8::TcpClient> tcp_client_;
|
std::shared_ptr<a8::TcpClient> tcp_client_;
|
||||||
|
#endif
|
||||||
f8::TimerWp timer_wp_;
|
f8::TimerWp timer_wp_;
|
||||||
f8::Attacher attacher_;
|
f8::Attacher attacher_;
|
||||||
};
|
};
|
||||||
|
@ -33,12 +33,10 @@ void UpStream::Init(int instance_id, const std::string& remote_ip, int remote_po
|
|||||||
last_pong_tick = a8::XGetTickCount();
|
last_pong_tick = a8::XGetTickCount();
|
||||||
recv_buff_ = (char*) malloc(PACK_MAX * 2);
|
recv_buff_ = (char*) malloc(PACK_MAX * 2);
|
||||||
#ifdef USE_ASIO
|
#ifdef USE_ASIO
|
||||||
tcp_client_ = std::make_shared<a8::AsioTcpClient>();
|
tcp_client_ = std::make_shared<a8::AsioTcpClient>(remote_ip, remote_port);
|
||||||
#else
|
#else
|
||||||
tcp_client_ = std::make_shared<a8::TcpClient>();
|
tcp_client_ = std::make_shared<a8::TcpClient>();
|
||||||
#endif
|
#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_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_connect = std::bind(&UpStream::on_connect, this, std::placeholders::_1);
|
||||||
tcp_client_->on_disconnect = std::bind(&UpStream::on_disconnect, 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",
|
f8::UdpLog::Instance()->Error("target server errorid=%d remote_ip:%s remote_port:%d",
|
||||||
{
|
{
|
||||||
errorId,
|
errorId,
|
||||||
sender->remote_address,
|
sender->GetRemoteAddress(),
|
||||||
sender->remote_port
|
sender->GetRemotePort()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,8 +177,8 @@ void UpStream::on_connect(a8::TcpClient* sender)
|
|||||||
recv_bufflen_ = 0;
|
recv_bufflen_ = 0;
|
||||||
f8::UdpLog::Instance()->Info("target server connected remote_ip:%s remote_port:%d",
|
f8::UdpLog::Instance()->Info("target server connected remote_ip:%s remote_port:%d",
|
||||||
{
|
{
|
||||||
sender->remote_address,
|
sender->GetRemoteAddress(),
|
||||||
sender->remote_port
|
sender->GetRemotePort()
|
||||||
});
|
});
|
||||||
f8::MsgQueue::Instance()->PostMsg
|
f8::MsgQueue::Instance()->PostMsg
|
||||||
(
|
(
|
||||||
@ -205,8 +203,8 @@ void UpStream::on_disconnect(a8::TcpClient* sender)
|
|||||||
"remote_ip:%s remote_port:%d",
|
"remote_ip:%s remote_port:%d",
|
||||||
{
|
{
|
||||||
instance_id,
|
instance_id,
|
||||||
sender->remote_address,
|
sender->GetRemoteAddress(),
|
||||||
sender->remote_port
|
sender->GetRemotePort()
|
||||||
});
|
});
|
||||||
f8::MsgQueue::Instance()->PostMsg
|
f8::MsgQueue::Instance()->PostMsg
|
||||||
(
|
(
|
||||||
|
2
third_party/a8
vendored
2
third_party/a8
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 60f3ef1f7c01c39af7f051e2181a56294f63e5ca
|
Subproject commit ed93a7c237ec1e0ac12fe324ff01fb097a9cb4b7
|
2
third_party/f8
vendored
2
third_party/f8
vendored
@ -1 +1 @@
|
|||||||
Subproject commit e8e6a85b8f00a248eea7aea80276c6f1afd98ef9
|
Subproject commit 8a49aa65c8576cabe1672be55fc903a6b17e2c37
|
Loading…
x
Reference in New Issue
Block a user