wsproxy/server/wsproxy/mastermgr.h
aozhiwei 55268bb0fd 1
2023-04-24 13:20:23 +08:00

51 lines
1.3 KiB
C++

#pragma once
namespace f8
{
struct MsgHdr;
}
namespace ss
{
class SS_MS_ResponseTargetServer;
}
class RequestTarget;
class Master;
class MasterMgr : public a8::Singleton<MasterMgr>
{
public:
enum { HID = HID_MasterMgr };
private:
MasterMgr() {};
friend class a8::Singleton<MasterMgr>;
public:
void Init();
void UnInit();
void _SS_MS_ResponseTargetServer(f8::MsgHdr& hdr, const ss::SS_MS_ResponseTargetServer& msg);
void RequestTargetServer(f8::MsgHdr& hdr,
const std::string& team_id,
const std::string& account_id,
const std::string& session_id,
const std::string& server_info,
int is_reconnect,
int proto_version);
void RemoveRequest(int socket_handle);
private:
std::shared_ptr<RequestTarget> GetRequestBySocket(int socket_handle);
std::shared_ptr<RequestTarget> GetRequestByContextId(long long context_id);
std::shared_ptr<Master> GetConnById(int instance_id);
private:
long long curr_context_id_ = 0;
std::map<int, std::shared_ptr<Master>> mastersvr_hash_;
std::map<int, std::shared_ptr<RequestTarget>> pending_socket_hash_;
std::map<long long, std::shared_ptr<RequestTarget>> pending_context_hash_;
};