rippled
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ripple::NodeStore::TaskQueue Class Reference
Inheritance diagram for ripple::NodeStore::TaskQueue:
Inheritance graph
[legend]
Collaboration diagram for ripple::NodeStore::TaskQueue:
Collaboration graph
[legend]

Public Member Functions

 TaskQueue ()
 
void stop ()
 
void addTask (std::function< void()> task)
 Adds a task to the queue. More...
 
size_t size () const
 Return the queue size. More...
 

Private Member Functions

void processTask (int instance) override
 Perform a task. More...
 

Private Attributes

std::mutex mutex_
 
Workers workers_
 
std::queue< std::function< void()> > tasks_
 
std::uint64_t processing_ {0}
 

Detailed Description

Definition at line 31 of file TaskQueue.h.

Constructor & Destructor Documentation

◆ TaskQueue()

ripple::NodeStore::TaskQueue::TaskQueue ( )

Definition at line 27 of file TaskQueue.cpp.

Member Function Documentation

◆ stop()

void ripple::NodeStore::TaskQueue::stop ( )

Definition at line 32 of file TaskQueue.cpp.

◆ addTask()

void ripple::NodeStore::TaskQueue::addTask ( std::function< void()>  task)

Adds a task to the queue.

Parameters
taskstd::function with signature void()

Definition at line 38 of file TaskQueue.cpp.

◆ size()

size_t ripple::NodeStore::TaskQueue::size ( ) const

Return the queue size.

Definition at line 48 of file TaskQueue.cpp.

◆ processTask()

void ripple::NodeStore::TaskQueue::processTask ( int  instance)
overrideprivatevirtual

Perform a task.

The call is made on a thread owned by Workers. It is important that you only process one task from inside your callback. Each call to addTask will result in exactly one call to processTask.

Parameters
instanceThe worker thread instance.
See also
Workers::addTask

Implements ripple::Workers::Callback.

Definition at line 55 of file TaskQueue.cpp.

Member Data Documentation

◆ mutex_

std::mutex ripple::NodeStore::TaskQueue::mutex_
mutableprivate

Definition at line 52 of file TaskQueue.h.

◆ workers_

Workers ripple::NodeStore::TaskQueue::workers_
private

Definition at line 53 of file TaskQueue.h.

◆ tasks_

std::queue<std::function<void()> > ripple::NodeStore::TaskQueue::tasks_
private

Definition at line 54 of file TaskQueue.h.

◆ processing_

std::uint64_t ripple::NodeStore::TaskQueue::processing_ {0}
private

Definition at line 55 of file TaskQueue.h.