diff --git a/include/sp/common/GenericHandler.h b/include/sp/common/GenericHandler.h index 1232176..8f0d25f 100644 --- a/include/sp/common/GenericHandler.h +++ b/include/sp/common/GenericHandler.h @@ -133,7 +133,7 @@ namespace sp { public: virtual ~GenericHandler() {} - // virtual void Handle(const TCommon&) {} //Nothing to do + virtual void Handle() {} //Nothing to do }; } // sp \ No newline at end of file diff --git a/include/sp/protocol/ConcreteMessage.h b/include/sp/protocol/ConcreteMessage.h index 5ba43cc..da73202 100644 --- a/include/sp/protocol/ConcreteMessage.h +++ b/include/sp/protocol/ConcreteMessage.h @@ -22,7 +22,7 @@ class ConcreteMessage : public MessageBase { } virtual void Dispatch(HandlerType& handler) const override { - handler.Handle(static_cast(m_Data)); + handler.Handle(*this); } virtual void Read(DataBuffer& a_Buffer) override { @@ -33,16 +33,16 @@ class ConcreteMessage : public MessageBase { return details::WriteMessage(m_Data); } - DataType* operator*() { - return &m_Data; + DataType& operator*() { + return m_Data; } DataType* operator->() { return &m_Data; } - const DataType* operator*() const { - return &m_Data; + const DataType& operator*() const { + return m_Data; } const DataType* operator->() const { diff --git a/test/test_message.cpp b/test/test_message.cpp index b958f1a..65617a0 100644 --- a/test/test_message.cpp +++ b/test/test_message.cpp @@ -12,7 +12,7 @@ #include #include -enum class PacketID { KeepAlive = 0 }; +enum class PacketID { KeepAlive = 0, MDC = 1 }; class PacketHandler; @@ -27,8 +27,9 @@ struct KeepAlivePacket { }; using KeepAliveMessage = Message; +using MDCMessage = Message; -using AllMessages = std::tuple; +using AllMessages = std::tuple; class PacketHandler : public sp::GenericHandler {}; @@ -37,6 +38,9 @@ class MyHandler : public PacketHandler { virtual void Handle(const KeepAliveMessage& msg) override { std::cout << "I recieved a keep alive : " << *msg->one << " : " << *msg->two << "\n"; } + virtual void Handle(const MDCMessage& msg) override { + std::cout << "I recieved a keep alive : " << *msg->one << " : " << *msg->two << "\n"; + } }; using PacketDispatcher = sp::MessageDispatcher;