f8/f8/protoutils.h
2023-09-27 16:36:53 +00:00

126 lines
4.1 KiB
C++

#pragma once
namespace a8
{
class TcpClient;
class TcpListener;
class AsioTcpClient;
}
class Player;
namespace f8
{
struct MsgHdr
{
int sockfrom;
unsigned int seqid;
unsigned short msgid;
int socket_handle;
unsigned long ip_saddr;
const char* buf;
int buflen;
int offset;
Player *hum = nullptr;
const void* user_data = nullptr;
list_head entry;
MsgHdr* Clone();
static void Destroy(MsgHdr* hdr);
};
//普通消息头部
struct PackHead
{
unsigned short packlen;
unsigned short msgid;
unsigned int seqid;
unsigned short magic_code;
unsigned short ext_len;
};
//大包消息头部
struct BigPackHead
{
int packlen;
unsigned short msgid;
unsigned int seqid;
unsigned short magic_code;
unsigned short rpc_error_code;
};
//转发类消息头部
struct ForwardPackHead
{
unsigned short packlen;
unsigned short sockethandle;
unsigned short msgid;
unsigned short src_msgid;
unsigned int src_seqid;
unsigned long ip_saddr;
unsigned int sign;
};
struct WSProxyPackHead_C
{
unsigned short packlen;
unsigned short msgid;
unsigned int seqid;
unsigned short magic_code;
unsigned short socket_handle;
unsigned long ip_saddr;
};
struct WSProxyPackHead_S
{
unsigned short packlen;
unsigned short msgid;
unsigned int seqid;
unsigned short magic_code;
unsigned short rpc_error_code;
unsigned short socket_handle;
unsigned short ext_len;
};
const unsigned short MAGIC_CODE = (((unsigned short)'S') << 8) | ((unsigned short)'K');
int Net_GetMessageId(const ::google::protobuf::Message& msg);
void Net_PackMsg(unsigned short msgid, ::google::protobuf::Message& msg, std::string& out);
int Net_SendMsg(a8::TcpClient* tcp_client, unsigned int seqid,
unsigned short msgid, const ::google::protobuf::Message& msg);
#if USE_ASIO
int Net_SendMsg(a8::AsioTcpClient* tcp_client, unsigned int seqid,
unsigned short msgid, const ::google::protobuf::Message& msg);
#endif
int Net_SendBigMsg(a8::TcpClient* tcp_client, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_SendMsg(a8::TcpClient* tcp_client, unsigned int seqid, unsigned short msgid,
const char* msgbody, int msgbody_len);
int Net_SendMsg(a8::TcpListener* tcp_tlistener, unsigned short socket_handle, unsigned int seqid,
unsigned short msgid, const ::google::protobuf::Message& msg);
int Net_SendBigMsg(a8::TcpListener* tcp_tlistener, unsigned short socket_handle, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_BroadcastMsg(a8::TcpListener* tcp_tlistener, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_BroadcastBigMsg(a8::TcpListener* tcp_tlistener, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_SendProxyCMsg(a8::TcpClient* tcp_client, unsigned short socket_handle,
unsigned short msgid, ::google::protobuf::Message& msg);
#ifdef USE_ASIO
int Net_SendProxyCMsg(a8::AsioTcpClient* tcp_client, unsigned short socket_handle,
unsigned short msgid, ::google::protobuf::Message& msg);
#endif
int Net_SendProxyMsg(a8::TcpListener* tcp_tlistener, int socket_handle,
unsigned int seqid, unsigned short error_code,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_SendProxyMsg(a8::TcpListener* tcp_tlistener, int socket_handle,
unsigned int seqid, unsigned short error_code,
unsigned short msgid, const std::string& data);
}