QuantumLibrary
Bloomberg::quantum::IoTask Class Reference

Long running or blocking task running in the IO thread pool. More...

#include <quantum_io_task.h>

Inheritance diagram for Bloomberg::quantum::IoTask:
Bloomberg::quantum::ITask Bloomberg::quantum::ITerminate

Public Types

using Ptr = std::shared_ptr< IoTask >
 
using WeakPtr = std::weak_ptr< IoTask >
 
- 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>
 IoTask (std::shared_ptr< Promise< RET >> promise, FUNC &&func, ARGS &&... args)
 
template<class RET , class FUNC , class ... ARGS>
 IoTask (std::shared_ptr< Promise< RET >> promise, int queueId, bool isHighPriority, FUNC &&func, ARGS &&... args)
 
 IoTask (const IoTask &task)=delete
 
 IoTask (IoTask &&task)=default
 
IoTaskoperator= (const IoTask &task)=delete
 
IoTaskoperator= (IoTask &&task)=default
 
 ~IoTask ()
 
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
 
- 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 (IoTask *p)
 

Detailed Description

Long running or blocking task running in the IO thread pool.

Note
For internal use only.

Member Typedef Documentation

◆ Ptr

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

◆ WeakPtr

Constructor & Destructor Documentation

◆ IoTask() [1/4]

template<class RET , class FUNC , class ... ARGS>
Bloomberg::quantum::IoTask::IoTask ( std::shared_ptr< Promise< RET >>  promise,
FUNC &&  func,
ARGS &&...  args 
)

◆ IoTask() [2/4]

template<class RET , class FUNC , class ... ARGS>
Bloomberg::quantum::IoTask::IoTask ( std::shared_ptr< Promise< RET >>  promise,
int  queueId,
bool  isHighPriority,
FUNC &&  func,
ARGS &&...  args 
)

◆ IoTask() [3/4]

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

◆ IoTask() [4/4]

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

◆ ~IoTask()

Bloomberg::quantum::IoTask::~IoTask ( )
inline

Member Function Documentation

◆ deleter()

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

◆ getQueueId()

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

◆ getType()

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

◆ isBlocked()

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

◆ isHighPriority()

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

◆ isSleeping()

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

◆ operator delete()

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

◆ operator new()

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

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ run()

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

◆ setQueueId()

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

◆ terminate()

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

Terminates the object.

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

Implements Bloomberg::quantum::ITerminate.