QuantumLibrary
Bloomberg::quantum::Task Class Reference

Runnable object representing a coroutine. More...

#include <quantum_task.h>

Inheritance diagram for Bloomberg::quantum::Task:
Bloomberg::quantum::ITaskContinuation Bloomberg::quantum::ITask Bloomberg::quantum::ITerminate

Public Types

using Ptr = std::shared_ptr< Task >
 
using WeakPtr = std::weak_ptr< Task >
 
- Public Types inherited from Bloomberg::quantum::ITaskContinuation
using Ptr = std::shared_ptr< ITaskContinuation >
 
using WeakPtr = std::weak_ptr< ITaskContinuation >
 
- Public Types inherited from Bloomberg::quantum::ITask
enum  Type : int {
  Type::Standalone, Type::First, Type::Continuation, Type::ErrorHandler,
  Type::Final, Type::Termination, Type::IO
}
 
enum  RetCode : int { RetCode::Success = 0, RetCode::Running = std::numeric_limits<int>::max(), RetCode::Exception = (int)Running-1, RetCode::NotCallable = (int)Running-2 }
 
using Ptr = std::shared_ptr< ITask >
 
using WeakPtr = std::weak_ptr< ITask >
 

Public Member Functions

template<class RET , class FUNC , class ... ARGS>
 Task (std::shared_ptr< Context< RET >> ctx, ITask::Type type, FUNC &&func, ARGS &&... args)
 
template<class RET , class FUNC , class ... ARGS>
 Task (std::shared_ptr< Context< RET >> ctx, int queueId, bool isHighPriority, ITask::Type type, FUNC &&func, ARGS &&... args)
 
 Task (const Task &task)=delete
 
 Task (Task &&task)=default
 
Taskoperator= (const Task &task)=delete
 
Taskoperator= (Task &&task)=default
 
 ~Task ()
 
void terminate () final
 Terminates the object. More...
 
int run () final
 
void setQueueId (int queueId) final
 
int getQueueId () final
 
Type getType () const final
 
bool isBlocked () const final
 
bool isSleeping (bool updateTimer=false) final
 
bool isHighPriority () const final
 
ITaskContinuation::Ptr getNextTask () final
 
void setNextTask (ITaskContinuation::Ptr nextTask) final
 
ITaskContinuation::Ptr getPrevTask () final
 
void setPrevTask (ITaskContinuation::Ptr prevTask) final
 
ITaskContinuation::Ptr getFirstTask () final
 
ITaskContinuation::Ptr getErrorHandlerOrFinalTask () final
 
- Public Member Functions inherited from Bloomberg::quantum::ITaskContinuation
virtual void setNextTask (Ptr nextTask)=0
 
virtual void setPrevTask (Ptr nextTask)=0
 
- Public Member Functions inherited from Bloomberg::quantum::ITask
 ~ITask ()=default
 
- Public Member Functions inherited from Bloomberg::quantum::ITerminate
virtual ~ITerminate ()=default
 Virtual destructor. This function is explicitly left empty. More...
 

Static Public Member Functions

static void * operator new (size_t size)
 
static void operator delete (void *p)
 
static void deleter (Task *p)
 

Detailed Description

Runnable object representing a coroutine.

Note
For internal use only.

Member Typedef Documentation

◆ Ptr

using Bloomberg::quantum::Task::Ptr = std::shared_ptr<Task>

◆ WeakPtr

using Bloomberg::quantum::Task::WeakPtr = std::weak_ptr<Task>

Constructor & Destructor Documentation

◆ Task() [1/4]

template<class RET , class FUNC , class ... ARGS>
Bloomberg::quantum::Task::Task ( std::shared_ptr< Context< RET >>  ctx,
ITask::Type  type,
FUNC &&  func,
ARGS &&...  args 
)

◆ Task() [2/4]

template<class RET , class FUNC , class ... ARGS>
Bloomberg::quantum::Task::Task ( std::shared_ptr< Context< RET >>  ctx,
int  queueId,
bool  isHighPriority,
ITask::Type  type,
FUNC &&  func,
ARGS &&...  args 
)

◆ Task() [3/4]

Bloomberg::quantum::Task::Task ( const Task task)
delete

◆ Task() [4/4]

Bloomberg::quantum::Task::Task ( Task &&  task)
default

◆ ~Task()

Bloomberg::quantum::Task::~Task ( )

Member Function Documentation

◆ deleter()

void Bloomberg::quantum::Task::deleter ( Task p)
inlinestatic

◆ getErrorHandlerOrFinalTask()

ITaskContinuation::Ptr Bloomberg::quantum::Task::getErrorHandlerOrFinalTask ( )
inlinefinalvirtual

◆ getFirstTask()

ITaskContinuation::Ptr Bloomberg::quantum::Task::getFirstTask ( )
inlinefinalvirtual

◆ getNextTask()

ITaskContinuation::Ptr Bloomberg::quantum::Task::getNextTask ( )
inlinefinalvirtual

◆ getPrevTask()

ITaskContinuation::Ptr Bloomberg::quantum::Task::getPrevTask ( )
inlinefinalvirtual

◆ getQueueId()

int Bloomberg::quantum::Task::getQueueId ( )
inlinefinalvirtual

◆ getType()

ITask::Type Bloomberg::quantum::Task::getType ( ) const
inlinefinalvirtual

◆ isBlocked()

bool Bloomberg::quantum::Task::isBlocked ( ) const
inlinefinalvirtual

◆ isHighPriority()

bool Bloomberg::quantum::Task::isHighPriority ( ) const
inlinefinalvirtual

◆ isSleeping()

bool Bloomberg::quantum::Task::isSleeping ( bool  updateTimer = false)
inlinefinalvirtual

◆ operator delete()

void Bloomberg::quantum::Task::operator delete ( void *  p)
inlinestatic

◆ operator new()

void * Bloomberg::quantum::Task::operator new ( size_t  size)
inlinestatic

◆ operator=() [1/2]

Task& Bloomberg::quantum::Task::operator= ( const Task task)
delete

◆ operator=() [2/2]

Task& Bloomberg::quantum::Task::operator= ( Task &&  task)
default

◆ run()

int Bloomberg::quantum::Task::run ( )
inlinefinalvirtual

◆ setNextTask()

void Bloomberg::quantum::Task::setNextTask ( ITaskContinuation::Ptr  nextTask)
inlinefinal

◆ setPrevTask()

void Bloomberg::quantum::Task::setPrevTask ( ITaskContinuation::Ptr  prevTask)
inlinefinal

◆ setQueueId()

void Bloomberg::quantum::Task::setQueueId ( int  queueId)
inlinefinalvirtual

◆ terminate()

void Bloomberg::quantum::Task::terminate ( )
inlinefinalvirtual

Terminates the object.

Note
This method should contain all logic necessary to properly cleanup this instance.

Implements Bloomberg::quantum::ITerminate.