#ifndef DEMO_PROTOCOL10_H #define DEMO_PROTOCOL10_H #include "Message.h" #include "ProtocolBase.h" #include class Protocol10 : public ProtocolBase { public: enum PacketType { tInit = 1, tInitAck, tRtpStream, tPing, tPong, }; Protocol10(); std::unique_ptr ReadProtocolPacket(const uint8_t *buffer, size_t size) override; rtc::Buffer WriteProtocolPacket(const message::Base *msg) override; private: typedef std::function(const uint8_t *, size_t)> Deserializer; typedef std::function Serializer; static const std::map decoders; static const std::map encoders; static rtc::Buffer InitEncode(const message::Base *msg_base); static std::unique_ptr InitDecode(const uint8_t *buffer, size_t size); static rtc::Buffer InitAckEncode(const message::Base *msg_base); static std::unique_ptr InitAckDecode(const uint8_t *buffer, size_t size); static rtc::Buffer RtpStreamEncode(const message::Base *msg_base); static std::unique_ptr RtpStreamDecode(const uint8_t *buffer, size_t size); static rtc::Buffer PingEncode(const message::Base *msg_base); static std::unique_ptr PingDecode(const uint8_t *buffer, size_t size); static rtc::Buffer PongEncode(const message::Base *msg_base); static std::unique_ptr PongDecode(const uint8_t *buffer, size_t size); }; #endif //DEMO_PROTOCOL10_H