/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IIOPipeWork.hpp Date: 2022-6-20 Author: Reece ***/ #pragma once namespace Aurora::IO { struct IIOPipeWork { /** * @brief begins the operation * @return */ virtual bool Start() = 0; /** * @brief terminates the operation * @return */ virtual bool End() = 0; /** * @brief time from the au epoch. see: AuTime::. * @return */ virtual AuInt64 GetStartTickMS() = 0; /** * @brief time from the au epoch. see: AuTime::. * @return */ virtual AuInt64 GetLastTickMS() = 0; /** * @brief quick approximation of normalized bytes / second * @return */ virtual double GetPredictedThroughput() = 0; /** * @brief bytes written to the stream (this will be one frame behind in the callback routine, if in on buffered data mode) * @return */ virtual AuUInt64 GetBytesProcessed() = 0; /** * @brief bytes read written to the destination. can be used under any callback to determine interframe progress * @return */ virtual AuUInt64 GetBytesProcessedInterframe() = 0; AURT_ADD_USR_DATA; }; }