xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
nodestore
detail
BatchWriter.h
1
#pragma once
2
3
#include <xrpl/nodestore/NodeObject.h>
4
#include <xrpl/nodestore/Scheduler.h>
5
#include <xrpl/nodestore/Task.h>
6
#include <xrpl/nodestore/Types.h>
7
8
#include <
condition_variable
>
9
#include <
memory
>
10
#include <
mutex
>
11
12
namespace
xrpl::node_store
{
13
23
class
BatchWriter
:
private
Task
24
{
25
public
:
29
struct
Callback
30
{
31
virtual
~Callback
() =
default
;
32
Callback
() =
default
;
33
Callback
(
Callback
const
&) =
delete
;
34
Callback
&
35
operator=
(
Callback
const
&) =
delete
;
36
37
virtual
void
38
writeBatch
(
Batch
const
& batch) = 0;
39
};
40
44
BatchWriter
(
Callback
& callback,
Scheduler
& scheduler);
45
51
~BatchWriter
()
override
;
52
59
void
60
store
(
std::shared_ptr<NodeObject>
const
&
object
);
61
65
int
66
getWriteLoad
();
67
68
private
:
69
void
70
performScheduledTask
()
override
;
71
void
72
writeBatch
();
73
void
74
waitForWriting
();
75
76
private
:
77
using
LockType
=
std::recursive_mutex
;
78
using
CondvarType
=
std::condition_variable_any
;
79
80
Callback
&
callback_
;
81
Scheduler
&
scheduler_
;
82
LockType
writeMutex_
;
83
CondvarType
writeCondition_
;
84
int
writeLoad_
{0};
85
bool
writePending_
{
false
};
86
Batch
writeSet_
;
87
};
88
89
}
// namespace xrpl::node_store
xrpl::node_store::BatchWriter::getWriteLoad
int getWriteLoad()
Get an estimate of the amount of writing I/O pending.
Definition
BatchWriter.cpp:48
xrpl::node_store::BatchWriter::performScheduledTask
void performScheduledTask() override
Performs the task.
Definition
BatchWriter.cpp:56
xrpl::node_store::BatchWriter::store
void store(std::shared_ptr< NodeObject > const &object)
Store the object.
Definition
BatchWriter.cpp:28
xrpl::node_store::BatchWriter::~BatchWriter
~BatchWriter() override
Destroy a batch writer.
Definition
BatchWriter.cpp:22
xrpl::node_store::BatchWriter::writeSet_
Batch writeSet_
Definition
BatchWriter.h:86
xrpl::node_store::BatchWriter::waitForWriting
void waitForWriting()
Definition
BatchWriter.cpp:102
xrpl::node_store::BatchWriter::writeCondition_
CondvarType writeCondition_
Definition
BatchWriter.h:83
xrpl::node_store::BatchWriter::scheduler_
Scheduler & scheduler_
Definition
BatchWriter.h:81
xrpl::node_store::BatchWriter::writeLoad_
int writeLoad_
Definition
BatchWriter.h:84
xrpl::node_store::BatchWriter::BatchWriter
BatchWriter(Callback &callback, Scheduler &scheduler)
Create a batch writer.
Definition
BatchWriter.cpp:16
xrpl::node_store::BatchWriter::CondvarType
std::condition_variable_any CondvarType
Definition
BatchWriter.h:78
xrpl::node_store::BatchWriter::writeMutex_
LockType writeMutex_
Definition
BatchWriter.h:82
xrpl::node_store::BatchWriter::LockType
std::recursive_mutex LockType
Definition
BatchWriter.h:77
xrpl::node_store::BatchWriter::writePending_
bool writePending_
Definition
BatchWriter.h:85
xrpl::node_store::BatchWriter::callback_
Callback & callback_
Definition
BatchWriter.h:80
xrpl::node_store::BatchWriter::writeBatch
void writeBatch()
Definition
BatchWriter.cpp:62
xrpl::node_store::Scheduler
Scheduling for asynchronous backend activity.
Definition
include/xrpl/nodestore/Scheduler.h:46
std::condition_variable_any
condition_variable
memory
mutex
xrpl::node_store
Definition
ServiceRegistry.h:18
xrpl::node_store::Batch
std::vector< std::shared_ptr< NodeObject > > Batch
A batch of NodeObjects to write at once.
Definition
nodestore/Types.h:37
std::recursive_mutex
std::shared_ptr
xrpl::node_store::BatchWriter::Callback
This callback does the actual writing.
Definition
BatchWriter.h:30
xrpl::node_store::BatchWriter::Callback::~Callback
virtual ~Callback()=default
xrpl::node_store::BatchWriter::Callback::Callback
Callback()=default
xrpl::node_store::BatchWriter::Callback::writeBatch
virtual void writeBatch(Batch const &batch)=0
xrpl::node_store::BatchWriter::Callback::operator=
Callback & operator=(Callback const &)=delete
xrpl::node_store::BatchWriter::Callback::Callback
Callback(Callback const &)=delete
xrpl::node_store::Task
Derived classes perform scheduled tasks.
Definition
Task.h:9
Generated by
1.17.0