rippled
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ripple::NodeStore::BatchWriter Class Reference

Batch-writing assist logic. More...

Inheritance diagram for ripple::NodeStore::BatchWriter:
Inheritance graph
[legend]
Collaboration diagram for ripple::NodeStore::BatchWriter:
Collaboration graph
[legend]

Classes

struct  Callback
 This callback does the actual writing. More...
 

Public Member Functions

 BatchWriter (Callback &callback, Scheduler &scheduler)
 Create a batch writer. More...
 
 ~BatchWriter ()
 Destroy a batch writer. More...
 
void store (std::shared_ptr< NodeObject > const &object)
 Store the object. More...
 
int getWriteLoad ()
 Get an estimate of the amount of writing I/O pending. More...
 

Private Types

using LockType = std::recursive_mutex
 
using CondvarType = std::condition_variable_any
 

Private Member Functions

void performScheduledTask () override
 Performs the task. More...
 
void writeBatch ()
 
void waitForWriting ()
 

Private Attributes

Callbackm_callback
 
Schedulerm_scheduler
 
LockType mWriteMutex
 
CondvarType mWriteCondition
 
int mWriteLoad
 
bool mWritePending
 
Batch mWriteSet
 

Detailed Description

Batch-writing assist logic.

The batch writes are performed with a scheduled task. Use of the class it not required. A backend can implement its own write batching, or skip write batching if doing so yields a performance benefit.

See also
Scheduler

Definition at line 40 of file BatchWriter.h.

Member Typedef Documentation

◆ LockType

Definition at line 86 of file BatchWriter.h.

◆ CondvarType

Definition at line 87 of file BatchWriter.h.

Constructor & Destructor Documentation

◆ BatchWriter()

ripple::NodeStore::BatchWriter::BatchWriter ( Callback callback,
Scheduler scheduler 
)

Create a batch writer.

Definition at line 25 of file BatchWriter.cpp.

◆ ~BatchWriter()

ripple::NodeStore::BatchWriter::~BatchWriter ( )

Destroy a batch writer.

Anything pending in the batch is written out before this returns.

Definition at line 34 of file BatchWriter.cpp.

Member Function Documentation

◆ store()

void ripple::NodeStore::BatchWriter::store ( std::shared_ptr< NodeObject > const &  object)

Store the object.

This will add to the batch and initiate a scheduled task to write the batch out.

Definition at line 40 of file BatchWriter.cpp.

◆ getWriteLoad()

int ripple::NodeStore::BatchWriter::getWriteLoad ( )

Get an estimate of the amount of writing I/O pending.

Definition at line 60 of file BatchWriter.cpp.

◆ performScheduledTask()

void ripple::NodeStore::BatchWriter::performScheduledTask ( )
overrideprivatevirtual

Performs the task.

The call may take place on a foreign thread.

Implements ripple::NodeStore::Task.

Definition at line 68 of file BatchWriter.cpp.

◆ writeBatch()

void ripple::NodeStore::BatchWriter::writeBatch ( )
private

Definition at line 74 of file BatchWriter.cpp.

◆ waitForWriting()

void ripple::NodeStore::BatchWriter::waitForWriting ( )
private

Definition at line 113 of file BatchWriter.cpp.

Member Data Documentation

◆ m_callback

Callback& ripple::NodeStore::BatchWriter::m_callback
private

Definition at line 89 of file BatchWriter.h.

◆ m_scheduler

Scheduler& ripple::NodeStore::BatchWriter::m_scheduler
private

Definition at line 90 of file BatchWriter.h.

◆ mWriteMutex

LockType ripple::NodeStore::BatchWriter::mWriteMutex
private

Definition at line 91 of file BatchWriter.h.

◆ mWriteCondition

CondvarType ripple::NodeStore::BatchWriter::mWriteCondition
private

Definition at line 92 of file BatchWriter.h.

◆ mWriteLoad

int ripple::NodeStore::BatchWriter::mWriteLoad
private

Definition at line 93 of file BatchWriter.h.

◆ mWritePending

bool ripple::NodeStore::BatchWriter::mWritePending
private

Definition at line 94 of file BatchWriter.h.

◆ mWriteSet

Batch ripple::NodeStore::BatchWriter::mWriteSet
private

Definition at line 95 of file BatchWriter.h.