2010-10-12 2 views
1

каждые, у меня есть вопрос о том, как буфер протокола взаимодействия с существовавшим механизмом протокола, Say код ниже:Как буфер протокола взаимодействовать с кодом устаревших протоколов

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

Может буфер протокола сделать работу в то время как сохранить иерархию классов без изменений?

ответ

0

Ну, так как ваши поля msgType и msgLen являются частными, я думаю, ваш вопрос сводится к «Могу ли я заменить LoginRequest на буфер протокола, у которого есть конструктор no-args?» и ответ здесь - безоговорочное «да».

Буферы протоколов заботятся о деактивации полей при сохранении информации о типе; у вас действительно нет причин писать этот код самостоятельно. Например, если вы должны создать protobuf LoginRequest, вы можете просто его построить, настроить сеттеры для установки его полей и затем сериализовать его в ostringstream. Этого, вероятно, достаточно для того, что вы хотите, не так ли?

 Смежные вопросы

  • Нет связанных вопросов^_^