AuroraRuntime/Source/IO/AuIOWaitableIOTimer.hpp

39 lines
989 B
C++
Raw Normal View History

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuIOWaitableIOTimer.hpp
Date: 2022-6-6
Author: Reece
***/
#pragma once
namespace Aurora::IO
{
struct IOWaitableIOTimer : IIOWaitableIOTimer
{
IOWaitableIOTimer();
bool IsValid();
bool IsRunOnOtherTick() override;
bool IsRunOnTick() override;
bool CanRequestTick() override;
void OnReportPumper(const AuSPtr<IIOProcessorManualInvoker> &iface) override;
bool IsRunOnSelfIO() override;
AuSPtr<Loop::ILoopSource> GetSelfIOSource() override;
bool IsRunOnSelfIOCheckedOnTimerTick() override;
bool ApplyRateLimit() override;
AuUInt32 IOTimeoutInMS() override;
AuUInt64 SetConstantTick(AuUInt64 ns) override;
AuUInt64 SetTargetTimeAbs(AuUInt64 ns) override;
AuSPtr<Loop::ITimer> source;
AuUInt64 constantTickNs {};
AuUInt64 targetTimeAbsNs {};
};
}