3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/comprehensive/Api.h"
7#include "mc/deps/core/threading/ITaskQueue.h"
8#include "mc/deps/core/threading/XTaskQueueDispatchMode.h"
9#include "mc/deps/core/threading/XTaskQueuePort.h"
19class TaskQueueImpl :
public ::Api<2, ::ITaskQueue> {
28 enum class TerminationLevel :
int {
34 struct TerminationEntry {
47 TerminationEntry& operator=(TerminationEntry
const&);
48 TerminationEntry(TerminationEntry
const&);
52 struct TerminationData {
64 TerminationData& operator=(TerminationData
const&);
65 TerminationData(TerminationData
const&);
83 TaskQueueImpl& operator=(TaskQueueImpl
const&);
89 virtual ~TaskQueueImpl() =
default;
91 virtual ::XTaskQueueObject* GetHandle() ;
95 virtual HRESULT RegisterWaitHandle(
96 ::XTaskQueuePort port,
98 void* callbackContext,
99 void (*callback)(
void*,
bool),
105 virtual HRESULT RegisterSubmitCallback(
113 virtual bool CanTerminate() ;
115 virtual bool CanClose() ;
117 virtual HRESULT Terminate(
bool wait,
void* callbackContext,
void (*callback)(
void*)) ;
119 virtual void RundownObject() ;
128 ::XTaskQueueDispatchMode workMode,
129 ::XTaskQueueDispatchMode completionMode,
130 bool allowTermination,
157 ::XTaskQueuePort port,
159 void* callbackContext,
160 void (*callback)(
void*,
bool),
178 MCNAPI HRESULT
$Terminate(
bool wait,
void* callbackContext,
void (*callback)(
void*));
static MCAPI void OnTerminationCallback(void *context)
static MCAPI void ** $vftable()
MCAPI HRESULT $Terminate(bool wait, void *callbackContext, void(*callback)(void *))
MCAPI long Initialize(::XTaskQueueDispatchMode workMode, ::XTaskQueueDispatchMode completionMode, bool allowTermination, bool allowClose)
MCAPI::XTaskQueueObject * $GetHandle()
MCAPI void $UnregisterSubmitCallback(::XTaskQueueRegistrationToken token)
MCAPI HRESULT $GetPortContext(::XTaskQueuePort port, ::ITaskQueuePortContext **portContext)
MCAPI HRESULT $RegisterWaitHandle(::XTaskQueuePort port, void *waitHandle, void *callbackContext, void(*callback)(void *, bool), ::XTaskQueueRegistrationToken *token)
MCAPI void $UnregisterWaitHandle(::XTaskQueueRegistrationToken token)
MCAPI HRESULT $RegisterSubmitCallback(void *context, void(*callback)(void *, ::XTaskQueueObject *, ::XTaskQueuePort), ::XTaskQueueRegistrationToken *token)
MCAPI long Initialize(::XTaskQueuePortObject *workPort, ::XTaskQueuePortObject *completionPort)
MCAPI bool $CanTerminate()
MCAPI void $RundownObject()
Definition ITaskQueuePortContext.h:16
Definition TaskQueueImpl.h:52
Definition TaskQueueImpl.h:34
Definition XTaskQueueObject.h:5
Definition XTaskQueuePortObject.h:5
Definition XTaskQueueRegistrationToken.h:5