diff --git a/include/sp/io/MessageStream.h b/include/sp/io/MessageStream.h index 3aea568..2c0d632 100644 --- a/include/sp/io/MessageStream.h +++ b/include/sp/io/MessageStream.h @@ -4,6 +4,7 @@ #include #include #include +#include namespace sp { diff --git a/include/sp/protocol/ConcreteMessage.h b/include/sp/protocol/ConcreteMessage.h index f1a4960..f9cf5a7 100644 --- a/include/sp/protocol/ConcreteMessage.h +++ b/include/sp/protocol/ConcreteMessage.h @@ -5,21 +5,23 @@ namespace sp { -template -class ConcreteMessage : public MessageBase { +template +class ConcreteMessage : public MessageBase { public: using DataType = TData; + using MessageIdType = typename MessageBase::MessageIdType; + using HandlerType = typename MessageBase::HandlerType; template ConcreteMessage(const T&... args) : m_Data{args...} {} virtual ~ConcreteMessage() {} - virtual TMessageID GetId() const override { + virtual MessageIdType GetId() const override { return ID; } - virtual void Dispatch(THandler& handler) const override { + virtual void Dispatch(HandlerType& handler) const override { handler.Handle(static_cast(m_Data)); } diff --git a/test/test_message.cpp b/test/test_message.cpp index f16993a..7602ceb 100644 --- a/test/test_message.cpp +++ b/test/test_message.cpp @@ -19,7 +19,7 @@ class PacketHandler; using PacketBase = sp::MessageBase; template -using Message = sp::ConcreteMessage; +using Message = sp::ConcreteMessage; struct KeepAlivePacket { sp::BitField one;