QuantumLibrary
Bloomberg::quantum::IoQueue Class Reference

Thread queue for executing IO tasks. More...

#include <quantum_io_queue.h>

Inheritance diagram for Bloomberg::quantum::IoQueue:
Bloomberg::quantum::IQueue Bloomberg::quantum::ITerminate

Public Types

using TaskList = std::list< IoTask::Ptr, QueueListAllocator >
 
using TaskListIter = TaskList::iterator
 
- Public Types inherited from Bloomberg::quantum::IQueue
enum  QueueType : int { QueueType::Coro, QueueType::IO, QueueType::All }
 
enum  QueueId : int { QueueId::Any = -1, QueueId::Same = -2, QueueId::All = -3 }
 
using Ptr = std::shared_ptr< IQueue >
 

Public Member Functions

 IoQueue ()
 
 IoQueue (const Configuration &config, std::vector< IoQueue > *sharedIoQueues)
 
 IoQueue (const IoQueue &other)
 
 IoQueue (IoQueue &&other)=default
 
 ~IoQueue ()
 
void terminate () final
 Terminates the object. More...
 
void pinToCore (int coreId) final
 
void run () final
 
void enqueue (ITask::Ptr task) final
 
bool tryEnqueue (ITask::Ptr task) final
 
ITask::Ptr dequeue (std::atomic_bool &hint) final
 
ITask::Ptr tryDequeue (std::atomic_bool &hint) final
 
size_t size () const final
 
bool empty () const final
 
IQueueStatisticsstats () final
 
SpinLockgetLock () final
 
void signalEmptyCondition (bool value) final
 
bool isIdle () const final
 
- Public Member Functions inherited from Bloomberg::quantum::ITerminate
virtual ~ITerminate ()=default
 Virtual destructor. This function is explicitly left empty. More...
 

Detailed Description

Thread queue for executing IO tasks.

Note
For internal use only.

Member Typedef Documentation

◆ TaskList

◆ TaskListIter

using Bloomberg::quantum::IoQueue::TaskListIter = TaskList::iterator

Constructor & Destructor Documentation

◆ IoQueue() [1/4]

Bloomberg::quantum::IoQueue::IoQueue ( )
inline

◆ IoQueue() [2/4]

Bloomberg::quantum::IoQueue::IoQueue ( const Configuration config,
std::vector< IoQueue > *  sharedIoQueues 
)
inline

◆ IoQueue() [3/4]

Bloomberg::quantum::IoQueue::IoQueue ( const IoQueue other)

◆ IoQueue() [4/4]

Bloomberg::quantum::IoQueue::IoQueue ( IoQueue &&  other)
default

◆ ~IoQueue()

Bloomberg::quantum::IoQueue::~IoQueue ( )

Member Function Documentation

◆ dequeue()

ITask::Ptr Bloomberg::quantum::IoQueue::dequeue ( std::atomic_bool &  hint)
inlinefinalvirtual

◆ empty()

bool Bloomberg::quantum::IoQueue::empty ( ) const
inlinefinalvirtual

◆ enqueue()

void Bloomberg::quantum::IoQueue::enqueue ( ITask::Ptr  task)
inlinefinalvirtual

◆ getLock()

SpinLock & Bloomberg::quantum::IoQueue::getLock ( )
inlinefinalvirtual

◆ isIdle()

bool Bloomberg::quantum::IoQueue::isIdle ( ) const
inlinefinalvirtual

◆ pinToCore()

void Bloomberg::quantum::IoQueue::pinToCore ( int  coreId)
inlinefinalvirtual

◆ run()

void Bloomberg::quantum::IoQueue::run ( )
inlinefinalvirtual

◆ signalEmptyCondition()

void Bloomberg::quantum::IoQueue::signalEmptyCondition ( bool  value)
inlinefinalvirtual

◆ size()

size_t Bloomberg::quantum::IoQueue::size ( ) const
inlinefinalvirtual

◆ stats()

IQueueStatistics & Bloomberg::quantum::IoQueue::stats ( )
inlinefinalvirtual

◆ terminate()

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

Terminates the object.

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

Implements Bloomberg::quantum::ITerminate.

◆ tryDequeue()

ITask::Ptr Bloomberg::quantum::IoQueue::tryDequeue ( std::atomic_bool &  hint)
inlinefinalvirtual

◆ tryEnqueue()

bool Bloomberg::quantum::IoQueue::tryEnqueue ( ITask::Ptr  task)
inlinefinalvirtual