25 lines
460 B
C++
25 lines
460 B
C++
#pragma once
|
|
|
|
#include <iosfwd>
|
|
|
|
namespace sp {
|
|
|
|
template <typename TMessageID, typename THandler>
|
|
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(std::istream& a_Is) = 0;
|
|
virtual void Write(std::ostream& a_Os) const = 0;
|
|
};
|
|
|
|
} // namespace sp
|