add SendBigMsg

This commit is contained in:
aozhiwei 2019-05-13 10:03:10 +08:00
parent f66ba1b9a2
commit dca17a2d72
2 changed files with 75 additions and 1 deletions

View File

@ -65,7 +65,8 @@ namespace f8
msg.SerializeToArray(buff + sizeof(PackHead), packlen);
}
int Net_SendMsg(a8::TcpClient* tcp_client, unsigned seqid, unsigned short msgid, ::google::protobuf::Message& msg)
int Net_SendMsg(a8::TcpClient* tcp_client, unsigned seqid, unsigned short msgid,
::google::protobuf::Message& msg)
{
int packlen = msg.ByteSize();
assert(packlen < 1024 * 60);
@ -83,6 +84,25 @@ namespace f8
return sizeof(PackHead) + packlen;
}
int Net_SendBigMsg(a8::TcpClient* tcp_client, unsigned seqid, unsigned short msgid,
::google::protobuf::Message& msg)
{
int packlen = msg.ByteSize();
assert(packlen < 1024 * 60);
char* buff = (char*)malloc(sizeof(f8::BigPackHead) + packlen);
f8::BigPackHead* head = (f8::BigPackHead*)buff;
head->packlen = packlen;
head->msgid = msgid;
head->seqid = seqid;
head->magic_code = MAGIC_CODE;
head->rpc_error_code = 0;
msg.SerializeToArray(buff + sizeof(f8::BigPackHead), packlen);
tcp_client->SendBuff(buff, sizeof(f8::BigPackHead) + packlen);
free(buff);
return sizeof(f8::BigPackHead) + packlen;
}
int Net_SendMsg(a8::TcpListener* tcp_listener, unsigned short socket_handle, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg)
{
@ -102,6 +122,25 @@ namespace f8
return sizeof(PackHead) + packlen;
}
int Net_SendBigMsg(a8::TcpListener* tcp_listener, unsigned short socket_handle, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg)
{
int packlen = msg.ByteSize();
assert(packlen < 1024 * 60);
char* buff = (char*)malloc(sizeof(f8::BigPackHead) + packlen);
f8::BigPackHead* head = (f8::BigPackHead*)buff;
head->packlen = packlen;
head->msgid = msgid;
head->seqid = seqid;
head->magic_code = MAGIC_CODE;
head->rpc_error_code = 0;
msg.SerializeToArray(buff + sizeof(f8::BigPackHead), packlen);
tcp_listener->SendClientMsg(socket_handle, buff, sizeof(f8::BigPackHead) + packlen);
free(buff);
return sizeof(f8::BigPackHead) + packlen;
}
int Net_BroadcastMsg(a8::TcpListener* tcp_listener, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg)
{
@ -121,6 +160,25 @@ namespace f8
return sizeof(PackHead) + packlen;
}
int Net_BroadcastBigMsg(a8::TcpListener* tcp_listener, unsigned int seqid,
unsigned short msgid, ::google::protobuf::Message& msg)
{
int packlen = msg.ByteSize();
assert(packlen < 1024 * 60);
char* buff = (char*)malloc(sizeof(f8::BigPackHead) + packlen);
f8::BigPackHead* head = (f8::BigPackHead*)buff;
head->packlen = packlen;
head->msgid = msgid;
head->seqid = seqid;
head->magic_code = MAGIC_CODE;
head->rpc_error_code = 0;
msg.SerializeToArray(buff + sizeof(f8::BigPackHead), packlen);
tcp_listener->BroadcastMsg(buff, sizeof(f8::BigPackHead) + packlen);
free(buff);
return sizeof(f8::BigPackHead) + packlen;
}
int Net_SendProxyCMsg(a8::TcpClient* tcp_client, unsigned short msgid, ::google::protobuf::Message& msg)
{
int packlen = msg.ByteSize();

View File

@ -27,6 +27,16 @@ namespace f8
unsigned short rpc_error_code;
};
//大包消息头部
struct BigPackHead
{
int packlen;
unsigned short msgid;
unsigned int seqid;
unsigned short magic_code;
unsigned short rpc_error_code;
};
//转发类消息头部
struct ForwardPackHead
{
@ -82,12 +92,18 @@ namespace f8
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, ::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, ::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 msgid, ::google::protobuf::Message& msg);