#pragma once #include #include namespace sp { template class MessageBase { public: using HandlerType = THandler; using MessageIdType = TMessageID; MessageBase() {} virtual ~MessageBase() {} virtual MessageIdType GetId() const = 0; virtual void Dispatch(HandlerType& handler) const = 0; virtual void Read(DataBuffer& a_Buffer) = 0; virtual DataBuffer Write() const = 0; }; } // namespace sp