working dispatcher + factory
All checks were successful
Linux arm64 / Build (push) Successful in 1m17s
All checks were successful
Linux arm64 / Build (push) Successful in 1m17s
This commit is contained in:
29
include/sp/protocol/ConcreteMessage.h
Normal file
29
include/sp/protocol/ConcreteMessage.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include <sp/protocol/MessageBase.h>
|
||||
|
||||
namespace sp {
|
||||
|
||||
template <typename TData, typename TMessageID, TMessageID ID, typename THandler>
|
||||
class ConcreteMessage : public MessageBase<TMessageID, THandler> {
|
||||
public:
|
||||
using DataType = TData;
|
||||
|
||||
template <typename... T>
|
||||
ConcreteMessage(const T&... args) : m_Data{args...} {}
|
||||
|
||||
virtual ~ConcreteMessage() {}
|
||||
|
||||
virtual constexpr TMessageID GetId() const override {
|
||||
return ID;
|
||||
}
|
||||
|
||||
virtual void Dispatch(THandler& handler) const override {
|
||||
handler.Handle(static_cast<const ConcreteMessage<TData, TMessageID, ID, THandler>&>(*this));
|
||||
}
|
||||
|
||||
private:
|
||||
DataType m_Data;
|
||||
};
|
||||
|
||||
} // namespace sp
|
||||
Reference in New Issue
Block a user