#ifndef PBCOMMON_H #define PBCOMMON_H #include #include #include #include class BaseProtobufMessage { private: public: bool firstField = true; uint32_t lastMessagePosition; void parseFromVector(std::vector const &rawData) { auto reader = std::make_shared(rawData); parseWithReader(reader); } void encodeToVector(std::vector &rawData) { auto writer = std::make_shared(rawData); encodeWithWriter(writer); } void parseWithReader(std::shared_ptr reader) { firstField = true; while (reader->next()) { if (!decodeField(reader)) { reader->skip(); } else { firstField = false; } } } virtual void encodeWithWriter(std::shared_ptr writer) = 0; virtual bool decodeField(std::shared_ptr reader) = 0; }; #endif