Как буфер протокола взаимодействует с устаревшим кодом протокола - PullRequest
1 голос
/ 12 октября 2010

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

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 голосов
/ 10 января 2011

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

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

...