/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: ProtocolPiece.hpp Date: 2022-8-24 Author: Reece ***/ #pragma once namespace Aurora::IO::Protocol { struct IProtocolNext; struct ProtocolStack; struct ProtocolPiece : IProtocolPiece, AuEnableSharedFromThis { ProtocolStack *pParent; AuSPtr pInterceptor; AuSPtr pInterceptorEx; AuSPtr pWriteInteface; AuSPtr pNext; AuByteBuffer outputBuffer; AuSPtr pOuputWriter; bool bMultipleTick {}; AuSPtr GetParent() override; AuSPtr GetNextPiece() override; bool ReallocateDrainBuffer(AuUInt32 uOutputLength) override; void Remove() override; AuSPtr ToNextWriter() override; AuSPtr ToInputWriter() override; AuSPtr GetNextPieceBuffer() override; AuSPtr GetExtendedInterceptor() override; AuSPtr GetShortPipeInterceptor() override; }; }