game2005/server/gameserver/GGListener.h
2020-10-28 11:50:16 +08:00

54 lines
1.3 KiB
C++

#pragma once
//game client listener
namespace a8
{
class TcpListener;
}
class GGListener : public a8::Singleton<GGListener>
{
private:
GGListener() {};
friend class a8::Singleton<GGListener>;
public:
enum { HID = HID_GGListener };
public:
void Init();
void UnInit();
template <typename T>
void SendProxyMsg(int sockhandle, T& msg)
{
static int msgid = f8::Net_GetMessageId(msg);
f8::Net_SendProxyMsg(tcp_listener_, sockhandle, 0, 0, msgid, msg);
}
template <typename T>
void SendToClient(int sockhandle, unsigned int seqid, T& msg)
{
static int msgid = f8::Net_GetMessageId(msg);
f8::Net_SendProxyMsg(tcp_listener_, sockhandle, seqid, 0, msgid, msg);
}
void SendText(int sockhandle, const std::string& text);
void SendError(int sockhandle, unsigned int seqid,
int error_code, const std::string& error_msg,
const char* file = nullptr, int lineno = 0, int error_param = 0);
void ForceCloseClient(int sockhandle);
void ForceCloseChildSocket(int sockhandle);
void MarkClient(int sockhandle, bool is_active);
long long GetSendNodeNum();
long long GetSentNodeNum();
long long GetSentBytesNum();
private:
void OnListenError(int errorid);
private:
a8::TcpListener *tcp_listener_ = nullptr;
};