f8/cpp/protoutils.h
aozhiwei 579efb2289 1
2020-09-27 11:16:21 +08:00

144 lines
4.7 KiB
C++

#pragma once
class Player;
namespace google
{
namespace protobuf
{
class Message;
}
}
namespace a8
{
class TcpClient;
class AsyncTcpClient;
class TcpListener;
}
namespace f8
{
//老消息头部(matchvs)
struct PackHeadOld
{
unsigned short packlen;
unsigned short msgid;
unsigned int magiccode;
};
//普通消息头部
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;
};
struct MsgHdr
{
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;
MsgHdr* Clone();
static void Destroy(MsgHdr* hdr);
};
#ifdef MATCHVS
const unsigned int MAGIC_CODE = 0xAABBCCAA;
#else
const unsigned short MAGIC_CODE = (((unsigned short)'S') << 8) | ((unsigned short)'K');
#endif
int Net_GetMessageId(const ::google::protobuf::Message& msg);
void Net_PackMsg(unsigned short msgid, ::google::protobuf::Message& msg, std::string& out);
void Net_PackMsgOld(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);
int Net_SendMsgOld(a8::TcpClient* tcp_client, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg);
int Net_SendMsg(a8::AsyncTcpClient* tcp_client, unsigned int seqid,
unsigned short msgid, const ::google::protobuf::Message& msg);
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_SendMsgOld(a8::TcpListener* tcp_tlistener, unsigned short socket_handle, unsigned int seqid,
unsigned short msgid, ::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);
int Net_SendProxyCMsg(a8::AsyncTcpClient* tcp_client, unsigned short socket_handle,
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, ::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);
}