协议缓冲区如何与传统协议代码交互

时间:2010-10-12 10:14:42

标签: c++ protocols protocol-buffers

每一个,我都有一个关于协议缓冲区如何与现有协议机制交互的问题,请参阅下面的代码:

class PacketBase
{
public:
   PacketBase();
private:
   int msgType;
   int msgLen;
private:
   MessageBuilder* m_pMsgBuilder;   /// do Write and Read From msg stream

};

class LoginRequest : public PacketBase
{
 /// here we can use proto replace the msg field defined here
 /// invoke write or read method in packetbase to serialze or de-serialize
};

协议缓冲区可以在保持类层次结构不变的情况下完成工作吗?

1 个答案:

答案 0 :(得分:0)

好吧,既然你的msgType和msgLen字段都是私有的,我想你的问题归结为“我可以用一个没有args构造函数的协议缓冲区替换LoginRequest吗?”这里的答案是不合格的“是”。

协议缓冲区负责(取消)序列化字段,同时保持类型信息;你自己没有理由自己编写代码。例如,如果要创建LoginRequest protobuf,则可以构造它,调用setter来设置其字段,然后将其序列化为ostringstream。这可能足以满足您的需求,对吗?