basic packet structure
This commit is contained in:
38
include/sp/Message.h
Normal file
38
include/sp/Message.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user