63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
#include "precompile.h"
|
|
|
|
#include "MSConnMgr.h"
|
|
#include "MSConn.h"
|
|
#include "jsondatamgr.h"
|
|
#include "app.h"
|
|
|
|
void MSConnMgr::Init()
|
|
{
|
|
auto master_svr_cluster_conf = JsonDataMgr::Instance()->GetMasterServerClusterConf();
|
|
for (int i = 0; i < master_svr_cluster_conf->Size(); ++i) {
|
|
auto master_svr_conf = master_svr_cluster_conf->At(i);
|
|
int instance_id = master_svr_conf->At("instance_id")->AsXValue();
|
|
std::string remote_ip = master_svr_conf->At("ip")->AsXValue();
|
|
int remote_port = master_svr_conf->At("port")->AsXValue();
|
|
{
|
|
MSConn* conn = new MSConn();
|
|
conn->Init(instance_id, remote_ip, remote_port);
|
|
conn->Open();
|
|
id_hash_[conn->instance_id] = conn;
|
|
}
|
|
}
|
|
}
|
|
|
|
void MSConnMgr::UnInit()
|
|
{
|
|
for (auto& pair : id_hash_) {
|
|
pair.second->UnInit();
|
|
delete pair.second;
|
|
}
|
|
}
|
|
|
|
MSConn* MSConnMgr::GetConnById(int instance_id)
|
|
{
|
|
auto itr = id_hash_.find(instance_id);
|
|
return itr != id_hash_.end() ? itr->second : nullptr;
|
|
}
|
|
|
|
void MSConnMgr::TraverseMSConn(std::function<bool (MSConn*)> func)
|
|
{
|
|
for (auto& pair : id_hash_) {
|
|
if (!func(pair.second)) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void MSConnMgr::__IM_MSConnConnect(a8::XParams& param)
|
|
{
|
|
MSConn* conn = GetConnById(param.sender);
|
|
if (conn) {
|
|
conn->OnConnectSync();
|
|
}
|
|
}
|
|
|
|
void MSConnMgr::__IM_MSConnDisconnect(a8::XParams& param)
|
|
{
|
|
MSConn* conn = GetConnById(param.sender);
|
|
if (conn) {
|
|
conn->OnDisconnectSync();
|
|
}
|
|
}
|