/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IAsyncTransaction.hpp Date: 2022-2-14 Author: Reece ***/ #pragma once namespace Aurora::Loop { struct ILoopSource; } namespace Aurora::IO::FS { struct IAsyncTransaction { virtual bool StartRead(AuUInt64 offset, const AuSPtr &memoryView) = 0; virtual bool StartWrite(AuUInt64 offset, const AuSPtr &memoryView) = 0; virtual bool Complete() = 0; virtual AuUInt32 GetLastPacketLength() = 0; virtual void SetCallback(const AuSPtr &sub) = 0; virtual bool Wait(AuUInt32 timeout) = 0; virtual AuSPtr NewLoopSource() = 0; }; }