/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: CompressionInterceptor.hpp Date: 2022-9-14 Author: Reece ***/ #pragma once #include namespace Aurora::Compression { struct CompressionInterceptor : ICompressionInterceptor, IO::IStreamReader { CompressionInterceptor(); void Init(const AuSPtr &pStream, const AuSPtr &pBaseStream); bool OnDataAvailable(const AuSPtr &pReadInByteBuffer, const AuSPtr &pWriteOutByteBuffer) override; inline virtual IO::EStreamError IsOpen() override; inline virtual IO::EStreamError Read(const Memory::MemoryViewStreamWrite ¶meters) override; inline virtual void Close() override; bool HasFailed() override; private: bool bErrorFlag_ {}; AuSPtr pStream_; AuSPtr pBaseStream_; AuSPtr pLastBuffer_; }; }