game2001/server/gameserver/GGListener.h
aozhiwei 11eee3ae95 1
2019-06-21 15:27:12 +08:00

50 lines
1.2 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 MarkClient(int sockhandle, bool is_active);
long long GetSendNodeNum();
long long GetSentNodeNum();
long long GetSentBytesNum();
private:
a8::TcpListener *tcp_listener_ = nullptr;
};