38 lines
655 B
C++
38 lines
655 B
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include <sp/common/DataBuffer.h>
|
|
|
|
namespace sp {
|
|
class Handler;
|
|
|
|
class Message {
|
|
public:
|
|
virtual ~Message() {}
|
|
|
|
void Write(DataBuffer& buffer) const {
|
|
buffer << GetId();
|
|
WriteImpl(buffer);
|
|
}
|
|
|
|
void Read(const DataBuffer& buffer) {
|
|
ReadImpl(buffer);
|
|
}
|
|
|
|
void Dispatch(Handler& handler) {
|
|
DispatchImpl(handler);
|
|
}
|
|
|
|
virtual int GetId() const = 0;
|
|
|
|
virtual std::string_view GetName() const = 0;
|
|
|
|
protected:
|
|
virtual void DispatchImpl(Handler& handler) = 0;
|
|
virtual void WriteImpl(DataBuffer& buffer) const = 0;
|
|
virtual void ReadImpl(const DataBuffer& buffer) = 0;
|
|
};
|
|
|
|
} // namespace sp
|