2010-10-12 66 views
1

每一个,我有一个关于协议缓冲区存在协议机制如何互动的问题,下面说代码:协议缓冲如何与传统协议代码交互

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 
}; 

CAN协议缓冲区做的工作,而保持类层次结构不变?

回答

0

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

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