diff --git a/cpp/protoutils.cc b/cpp/protoutils.cc index 79c6483..9950062 100644 --- a/cpp/protoutils.cc +++ b/cpp/protoutils.cc @@ -96,6 +96,52 @@ int Net_SendMsg(a8::TcpListener* tcp_listener, unsigned short socket_handle, uns return sizeof(PackHead) + packlen; } +int Net_BroadcastMsg(a8::TcpListener* tcp_listener, unsigned int seqid, + unsigned short msgid, ::google::protobuf::Message& msg) +{ + int packlen = msg.ByteSize(); + + char* buff = (char*)malloc(sizeof(PackHead) + packlen); + PackHead* head = (PackHead*)buff; + head->packlen = packlen; + head->msgid = msgid; + head->seqid = seqid; + head->magic_code = MAGIC_CODE; + msg.SerializeToArray(buff + sizeof(PackHead), packlen); + tcp_listener->BroadcastMsg(buff, sizeof(PackHead) + packlen); + free(buff); + return sizeof(PackHead) + packlen; +} + +int Net_SendProxyCMsg(a8::TcpClient* tcp_client, unsigned short msgid, ::google::protobuf::Message& msg) +{ + int packlen = msg.ByteSize(); + + char* buff = (char*)malloc(sizeof(WSProxyPackHead_S) + packlen); + WSProxyPackHead_C* head = (WSProxyPackHead_C*)buff; + head->packlen = packlen; + head->msgid = msgid; + #if 1 + head->seqid = 0; + #else + head->seqid = seqid; + #endif + head->magic_code = MAGIC_CODE; + #if 0 + head->rpc_error_code = error_code; + #endif + #if 1 + head->socket_handle = 0; + #else + head->socket_handle = child_socket_handle; + #endif + + msg.SerializeToArray(buff + sizeof(WSProxyPackHead_C), packlen); + tcp_client->SendBuff(buff, sizeof(WSProxyPackHead_C) + packlen); + free(buff); + return sizeof(WSProxyPackHead_C) + packlen; +} + int Net_SendProxyMsg(a8::TcpListener* tcp_listener, int socket_handle, unsigned int seqid, unsigned short error_code, unsigned short msgid, ::google::protobuf::Message& msg) { diff --git a/cpp/protoutils.h b/cpp/protoutils.h index 8060cac..5afb864 100644 --- a/cpp/protoutils.h +++ b/cpp/protoutils.h @@ -83,6 +83,10 @@ int Net_SendMsg(a8::TcpClient* tcp_client, unsigned int seqid, unsigned short ms 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_BroadcastMsg(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); int Net_SendProxyMsg(a8::TcpListener* tcp_tlistener, int socket_handle, unsigned int seqid, unsigned short error_code, unsigned short msgid, ::google::protobuf::Message& msg); diff --git a/cpp/utils.cc b/cpp/utils.cc index 22138fe..b8e857c 100644 --- a/cpp/utils.cc +++ b/cpp/utils.cc @@ -66,9 +66,9 @@ bool ReadCsvMetaFile(const std::string& filename, } break; }//end switch - push_back_func(msg); - delete msg; }//end for + push_back_func(msg); + delete msg; } return true;