generic encapsulator
This commit is contained in:
@@ -13,14 +13,14 @@ class IOInterface {
|
||||
void Write(const DataBuffer& a_Data);
|
||||
};
|
||||
|
||||
template <typename IOTag>
|
||||
template <typename TOption>
|
||||
class MessageEncapsulator {
|
||||
public:
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, std::size_t a_Length);
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data, const TOption& a_Option);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, std::size_t a_Length, const TOption& a_Option);
|
||||
};
|
||||
|
||||
template <typename IOTag, typename MessageDispatcher, typename MessageFactory>
|
||||
template <typename IOTag, typename MessageDispatcher, typename MessageFactory, typename... TOptions>
|
||||
class Stream {
|
||||
protected:
|
||||
MessageDispatcher m_Dispatcher;
|
||||
@@ -33,16 +33,16 @@ class Stream {
|
||||
Stream(IOInterface<IOTag>&& a_Interface);
|
||||
Stream(Stream&& a_Stream);
|
||||
|
||||
void RecieveMessages();
|
||||
void SendMessage(const MessageBase& a_Message);
|
||||
void RecieveMessages(const TOptions&... a_Options);
|
||||
void SendMessage(const MessageBase& a_Message, const TOptions&... a_Options);
|
||||
|
||||
MessageDispatcher& GetDispatcher() {
|
||||
return m_Dispatcher;
|
||||
}
|
||||
|
||||
private:
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, std::size_t a_Length);
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data, const TOptions&... a_Options);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, std::size_t a_Length, const TOptions&... a_Options);
|
||||
};
|
||||
|
||||
} // namespace io
|
||||
|
||||
Reference in New Issue
Block a user