xrpld
Loading...
Searching...
No Matches
BatchWriter.h
1#pragma once
2
3#include <xrpl/nodestore/Scheduler.h>
4#include <xrpl/nodestore/Task.h>
5#include <xrpl/nodestore/Types.h>
6
7#include <condition_variable>
8#include <mutex>
9
10namespace xrpl::NodeStore {
11
20class BatchWriter : private Task
21{
22public:
24 struct Callback
25 {
26 virtual ~Callback() = default;
27 Callback() = default;
28 Callback(Callback const&) = delete;
30 operator=(Callback const&) = delete;
31
32 virtual void
33 writeBatch(Batch const& batch) = 0;
34 };
35
37 BatchWriter(Callback& callback, Scheduler& scheduler);
38
43 ~BatchWriter() override;
44
50 void
52
54 int
56
57private:
58 void
59 performScheduledTask() override;
60 void
61 writeBatch();
62 void
64
65private:
68
73 int writeLoad_{0};
74 bool writePending_{false};
76};
77
78} // namespace xrpl::NodeStore
void store(std::shared_ptr< NodeObject > const &object)
Store the object.
void performScheduledTask() override
Performs the task.
std::condition_variable_any CondvarType
Definition BatchWriter.h:67
~BatchWriter() override
Destroy a batch writer.
std::recursive_mutex LockType
Definition BatchWriter.h:66
int getWriteLoad()
Get an estimate of the amount of writing I/O pending.
BatchWriter(Callback &callback, Scheduler &scheduler)
Create a batch writer.
Scheduling for asynchronous backend activity.
std::vector< std::shared_ptr< NodeObject > > Batch
A batch of NodeObjects to write at once.
This callback does the actual writing.
Definition BatchWriter.h:25
Callback & operator=(Callback const &)=delete
virtual void writeBatch(Batch const &batch)=0
Callback(Callback const &)=delete
Derived classes perform scheduled tasks.
Definition Task.h:7