Files
Simple-Protocol-Lib/include/sp/Message.h
2025-02-05 15:00:19 +01:00

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