AuroraRuntime/Include/Aurora/IO/CompletionGroup/ICompletionGroup.hpp

41 lines
1.0 KiB
C++
Raw Normal View History

2023-12-28 16:49:11 +00:00
/***
Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: CompletionGroup.hpp
Date: 2023-12-28
Author: Reece
***/
#pragma once
namespace Aurora::Async
{
struct IWorkItem;
}
namespace Aurora::IO::Loop
{
struct ILSEvent;
}
namespace Aurora::IO::CompletionGroup
{
struct ICompletionGroup
{
virtual AuSPtr<Loop::ILoopSource> ToAndLoopSource() = 0;
virtual AuSPtr<Loop::ILoopSource> ToAnyLoopSource() = 0;
virtual AuSPtr<Async::IWorkItem> OnCompletion() = 0;
virtual AuSPtr<Async::IWorkItem> OnSingleCompletion() = 0;
virtual bool HasCompleted() = 0;
virtual AuPair<AuUInt32, AuUInt32> GetStats() = 0;
virtual void SetCallbacks(const AuSPtr<ICompletionGroupHooks> &pCallbacks) = 0;
virtual void AddWorkItem(AuSPtr<ICompletionGroupWorkItem> pCompletable) = 0;
virtual AuSPtr<Loop::ILSEvent> GetTriggerLoopSource() = 0;
virtual void TryTrigger() = 0;
};
AUKN_SYM AuSPtr<ICompletionGroup> NewCompletionGroup();
}