/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuIOWaitableIOLoopSource.hpp Date: 2022-6-6 Author: Reece ***/ #pragma once namespace Aurora::IO { struct IOWatachableIOLoopSource : IIOWatachableIOLoopSource { IOWatachableIOLoopSource(const AuSPtr&pSource); IOWatachableIOLoopSource(const AuSPtr&pSource, AuUInt32 ioTimeoutMS); 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; AuSPtr GetLoopSource() override; AuSPtr SetLoopSource(const AuSPtr &pSource) override; bool IsRunOnSelfIOCheckedOnTimerTick() override; AuSPtr pSource; AuUInt32 dwIoTimeoutMS{}; }; }