21 #include <quantum/quantum_allocator.h> 26 #ifndef __QUANTUM_IO_TASK_ALLOC_SIZE 27 #define __QUANTUM_IO_TASK_ALLOC_SIZE __QUANTUM_DEFAULT_POOL_ALLOC_SIZE 29 #ifndef __QUANTUM_USE_DEFAULT_ALLOCATOR 30 #ifdef __QUANTUM_ALLOCATE_POOL_FROM_HEAP 39 template <
class RET,
class FUNC,
class ... ARGS>
43 _func(
Util::bindIoCaller(promise,
44 std::forward<FUNC>(func),
45 std::forward<ARGS>(args)...)),
46 _terminated ATOMIC_FLAG_INIT,
47 _queueId((int)
IQueue::QueueId::Any),
48 _isHighPriority(false)
52 template <
class RET,
class FUNC,
class ... ARGS>
58 _func(
Util::bindIoCaller(promise,
59 std::forward<FUNC>(func),
60 std::forward<ARGS>(args)...)),
61 _terminated ATOMIC_FLAG_INIT,
63 _isHighPriority(isHighPriority)
76 if (!_terminated.test_and_set())
121 return _isHighPriority;
125 void* IoTask::operator
new(size_t)
131 void IoTask::operator
delete(
void* p)
139 #ifndef __QUANTUM_USE_DEFAULT_ALLOCATOR static size_type & ioTaskAllocSize()
Get/set if the default size for IO task object pools.
Definition: quantum_allocator_traits.h:154
static AllocType & instance(std::enable_if_t<!A::default_constructor::value, uint16_t > size)
Definition: quantum_allocator.h:56
Type getType() const final
Definition: quantum_io_task_impl.h:101
Long running or blocking task running in the IO thread pool.
Definition: quantum_io_task.h:34
Definition: quantum_buffer_impl.h:22
bool isHighPriority() const final
Definition: quantum_io_task_impl.h:119
Definition: quantum_allocator.h:36
bool isBlocked() const final
Definition: quantum_io_task_impl.h:107
Utility to bind a user callable function unto a coroutine or an IO task.
Definition: quantum_util.h:45
Definition: quantum_stl_impl.h:23
int run() final
Definition: quantum_io_task_impl.h:83
Type
Definition: quantum_itask.h:37
Class representing a promised value.
Definition: quantum_icoro_promise.h:77
~IoTask()
Definition: quantum_io_task_impl.h:68
static void deleter(IoTask *p)
Definition: quantum_io_task_impl.h:137
bool isSleeping(bool updateTimer=false) final
Definition: quantum_io_task_impl.h:113
Provides a stack-based object pool to the underlying ContiguousPoolManager. The default buffer size i...
Definition: quantum_stack_allocator.h:34
Interface to a task queue. For internal use only.
Definition: quantum_iqueue.h:33
void setQueueId(int queueId) final
Definition: quantum_io_task_impl.h:89
IoTask(std::shared_ptr< Promise< RET >> promise, FUNC &&func, ARGS &&... args)
Definition: quantum_io_task_impl.h:40
StackAllocator< IoTask, __QUANTUM_IO_TASK_ALLOC_SIZE > IoTaskAllocator
Definition: quantum_io_task_impl.h:33
void terminate() final
Terminates the object.
Definition: quantum_io_task_impl.h:74
int getQueueId() final
Definition: quantum_io_task_impl.h:95