/*** Copyright (C) 2024 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuIOWaitableIOCompletionGroup.hpp Date: 2024-1-6 Author: Reece ***/ #pragma once namespace Aurora::IO { struct IOWaitableIOCompletionGroup : IIOWaitableItem { IOWaitableIOCompletionGroup(const AuSPtr &pGroup, bool bAny = true); IOWaitableIOCompletionGroup(); void SetGroup(const AuSPtr &pGroup); void Bind(const AuSPtr &pGroup, const AuSPtr &pParent); bool IsRunOnOtherTick() override; bool IsRunOnTick() override; bool CanRequestTick() override; void OnReportPumper(const AuSPtr &iface) override; bool IsRunOnSelfIO() override; AuSPtr GetSelfIOSource() override; bool ApplyRateLimit() override; AuUInt32 IOTimeoutInMS() override; bool IsRunOnSelfIOCheckedOnTimerTick() override; AuSPtr pGroup; AuSPtr pParent {}; bool bAny { true }; }; }