/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IOProcessorItem.hpp Date: 2022-6-6 Author: Reece ***/ #pragma once namespace Aurora::IO { struct IOProcessor; struct IOProcessorItem : AuLoop::ILoopSourceSubscriberEx, IIOProcessorItem, AuEnableSharedFromThis { IOProcessor *parent; bool singleshot{}; bool triggered{}; AuSPtr item; AuSPtr listener; // ILoopSourceSubscriber bool OnFinished(const AuSPtr &source, AuUInt8 pos) override; void OnTimeout(const AuSPtr& source) override; // IIOProcessorItem virtual bool StopWatch() override; virtual bool FailWatch() override; // IIOProcessorItem::... void InvokeManualTick() override; // void IOAlert(bool force); }; }