diff --git a/server/imserver/MSConn.cc b/server/imserver/MSConn.cc index ce3939c..0241c40 100644 --- a/server/imserver/MSConn.cc +++ b/server/imserver/MSConn.cc @@ -36,7 +36,7 @@ void MSConn::Init(int instance_id, const std::string& remote_ip, int remote_port tcp_client_->on_connect = std::bind(&MSConn::on_connect, this, std::placeholders::_1); tcp_client_->on_disconnect = std::bind(&MSConn::on_disconnect, this, std::placeholders::_1); tcp_client_->on_socketread = std::bind(&MSConn::on_socketread, this ,std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - timer_ = a8::Timer::Instance()->AddRepeatTimer + a8::Timer::Instance()->AddRepeatTimerAndAttach (1000 * 9 + a8::RandEx(500, 150), a8::XParams().SetSender(this), [] (const a8::XParams& param) @@ -44,14 +44,22 @@ void MSConn::Init(int instance_id, const std::string& remote_ip, int remote_port MSConn* conn = (MSConn*)param.sender.GetUserData(); conn->CheckAlive(); conn->SyncIMServerList(); + }, + &timer_attacher_.timer_list_); + a8::Timer::Instance()->AddRepeatTimerAndAttach + (800 + a8::RandEx(100, 300), + a8::XParams().SetSender(this), + [] (const a8::XParams& param) + { + MSConn* conn = (MSConn*)param.sender.GetUserData(); conn->ReportServerInfo(); - }); + }, + &timer_attacher_.timer_list_); } void MSConn::UnInit() { - a8::Timer::Instance()->DeleteTimer(timer_); - timer_ = nullptr; + timer_attacher_.ClearTimerList(); tcp_client_->Close(); a8::IoLoop::Instance()->DestoryAsyncTcpClient(tcp_client_); tcp_client_ = nullptr; diff --git a/server/imserver/MSConn.h b/server/imserver/MSConn.h index 867e84b..3f6d97c 100644 --- a/server/imserver/MSConn.h +++ b/server/imserver/MSConn.h @@ -1,5 +1,7 @@ #pragma once +#include + #include "framework/cpp/protoutils.h" #include "framework/cpp/netmsghandler.h" @@ -63,5 +65,6 @@ class MSConn char *recv_buff_ = nullptr; unsigned int recv_bufflen_ = 0; a8::AsyncTcpClient* tcp_client_ = nullptr; - timer_list* timer_ = nullptr; + + a8::TimerAttacher timer_attacher_; }; diff --git a/server/masterserver/svrmgr.cc b/server/masterserver/svrmgr.cc index b9f54be..17cdc49 100644 --- a/server/masterserver/svrmgr.cc +++ b/server/masterserver/svrmgr.cc @@ -17,9 +17,7 @@ void SvrMgr::Init() a8::XParams(), [] (const a8::XParams& param) { - #ifndef DEBUG SvrMgr::Instance()->ClearTimeOutNode(); - #endif }); }