#pragma once #include namespace sp { class MessageEncapsulator { protected: bool m_Enabled = true; public: MessageEncapsulator() {} virtual ~MessageEncapsulator() {} DataBuffer Encapsulate(const DataBuffer& a_Data) { if (!m_Enabled) return a_Data; return EncapsulateImpl(a_Data); } DataBuffer Decapsulate(DataBuffer& a_Data) { if (!m_Enabled) return a_Data; return DecapsulateImpl(a_Data); } protected: virtual DataBuffer EncapsulateImpl(const DataBuffer& a_Data) = 0; virtual DataBuffer DecapsulateImpl(DataBuffer& a_Data) = 0; }; } // namespace sp