zlib support (#9)
Reviewed-on: #9 Co-authored-by: Persson-dev <sim16.prib@gmail.com> Co-committed-by: Persson-dev <sim16.prib@gmail.com>
This commit was merged in pull request #9.
This commit is contained in:
@@ -13,25 +13,43 @@ class IOInterface {
|
||||
void Write(const DataBuffer& a_Data);
|
||||
};
|
||||
|
||||
template <typename IOTag, typename MessageDispatcher, typename MessageFactory>
|
||||
template <typename TOption>
|
||||
class MessageEncapsulator {
|
||||
public:
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data, const TOption& a_Option);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, const TOption& a_Option);
|
||||
};
|
||||
|
||||
template <typename IOTag, typename MessageDispatcher, typename MessageFactory, typename... TOptions>
|
||||
class Stream {
|
||||
protected:
|
||||
MessageDispatcher m_Dispatcher;
|
||||
IOInterface<IOTag> m_Interface;
|
||||
std::tuple<TOptions...> m_Options;
|
||||
|
||||
using MessageBase = typename MessageDispatcher::MessageBaseType;
|
||||
|
||||
public:
|
||||
Stream() {}
|
||||
Stream(IOInterface<IOTag>&& a_Interface);
|
||||
Stream(IOInterface<IOTag>&& a_Interface, TOptions&&... a_Options);
|
||||
Stream(Stream&& a_Stream);
|
||||
|
||||
void RecieveMessages();
|
||||
void SendMessage(const MessageBase& a_Message);
|
||||
|
||||
|
||||
template <typename TOption>
|
||||
TOption& GetOption() {
|
||||
return std::get<TOption>(m_Options);
|
||||
}
|
||||
|
||||
MessageDispatcher& GetDispatcher() {
|
||||
return m_Dispatcher;
|
||||
}
|
||||
|
||||
private:
|
||||
static DataBuffer Encapsulate(const DataBuffer& a_Data, const TOptions&... a_Options);
|
||||
static DataBuffer Decapsulate(DataBuffer& a_Data, const TOptions&... a_Options);
|
||||
};
|
||||
|
||||
} // namespace io
|
||||
|
||||
Reference in New Issue
Block a user