jeremyczhen / fdbus

FDBus - Fast Distributed Bus
https://blog.csdn.net/jeremy_cz/article/details/89060291
161 stars 85 forks source link

protobuf3 适配问题 #18

Open xiachong9 opened 3 years ago

xiachong9 commented 3 years ago

你好,fdbus如果使用protobuf3,当一端发送内容全为0的数据的时候,protobuf会认为这些值都是默认值从而序列化出来的数据为空,fdbus会将这个发出去,而在接收端调用msg->deserialize()函数的时候,因为 bool CFdbMessage::deserialize(IFdbMsgParser &payload) const { if (!mBuffer || !mPayloadSize) { return false; } return payload.parse(mBuffer + mOffset + mPrefixSize + mHeadSize, mPayloadSize); } 这个函数里面有对长度的判断,从而直接返回false,这个问题应该怎么处理?

yuminmin123 commented 3 years ago

在返回false时比较一下getExtraDataSize和getPayloadSize是否相等来判断一下是否传的是默认值。发送默认值时,fdbus默认不发送数据。或者换个解析数据的方式 比如ParseFromString()