xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
app
main
NodeStoreScheduler.cpp
1
#include <xrpld/app/main/NodeStoreScheduler.h>
2
3
#include <xrpl/core/Job.h>
4
#include <xrpl/core/JobQueue.h>
5
#include <xrpl/nodestore/Scheduler.h>
6
#include <xrpl/nodestore/Task.h>
7
8
namespace
xrpl
{
9
10
NodeStoreScheduler::NodeStoreScheduler
(
JobQueue
& jobQueue) :
jobQueue_
(jobQueue)
11
{
12
}
13
14
void
15
NodeStoreScheduler::scheduleTask
(
node_store::Task
& task)
16
{
17
if
(
jobQueue_
.isStopped())
18
return
;
19
20
if
(!
jobQueue_
.addJob(
JtWrite
,
"NObjStore"
, [&task]() { task.performScheduledTask(); }))
21
{
22
// Job not added, presumably because we're shutting down.
23
// Recover by executing the task synchronously.
24
task.
performScheduledTask
();
25
}
26
}
27
28
void
29
NodeStoreScheduler::onFetch
(
node_store::FetchReport
const
& report)
30
{
31
if
(
jobQueue_
.isStopped())
32
return
;
33
34
jobQueue_
.addLoadEvents(
35
report.
fetchType
==
node_store::FetchType::Async
?
JtNsAsyncRead
:
JtNsSyncRead
,
36
1,
37
report.
elapsed
);
38
}
39
40
void
41
NodeStoreScheduler::onBatchWrite
(
node_store::BatchWriteReport
const
& report)
42
{
43
if
(
jobQueue_
.isStopped())
44
return
;
45
46
jobQueue_
.addLoadEvents(
JtNsWrite
, report.
writeCount
, report.
elapsed
);
47
}
48
49
}
// namespace xrpl
xrpl::JobQueue
A pool of threads to perform work.
Definition
JobQueue.h:60
xrpl::NodeStoreScheduler::scheduleTask
void scheduleTask(node_store::Task &task) override
Schedules a task.
Definition
NodeStoreScheduler.cpp:15
xrpl::NodeStoreScheduler::jobQueue_
JobQueue & jobQueue_
Definition
NodeStoreScheduler.h:25
xrpl::NodeStoreScheduler::NodeStoreScheduler
NodeStoreScheduler(JobQueue &jobQueue)
Definition
NodeStoreScheduler.cpp:10
xrpl::NodeStoreScheduler::onFetch
void onFetch(node_store::FetchReport const &report) override
Reports completion of a fetch Allows the scheduler to monitor the node store's performance.
Definition
NodeStoreScheduler.cpp:29
xrpl::NodeStoreScheduler::onBatchWrite
void onBatchWrite(node_store::BatchWriteReport const &report) override
Reports the completion of a batch write Allows the scheduler to monitor the node store's performance.
Definition
NodeStoreScheduler.cpp:41
xrpl::node_store::FetchType::Async
@ Async
Definition
include/xrpl/nodestore/Scheduler.h:9
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::JtNsWrite
@ JtNsWrite
Definition
Job.h:78
xrpl::JtWrite
@ JtWrite
Definition
Job.h:58
xrpl::JtNsAsyncRead
@ JtNsAsyncRead
Definition
Job.h:77
xrpl::JtNsSyncRead
@ JtNsSyncRead
Definition
Job.h:76
xrpl::node_store::BatchWriteReport
Contains information about a batch write operation.
Definition
include/xrpl/nodestore/Scheduler.h:29
xrpl::node_store::BatchWriteReport::writeCount
int writeCount
Definition
include/xrpl/nodestore/Scheduler.h:33
xrpl::node_store::BatchWriteReport::elapsed
std::chrono::milliseconds elapsed
Definition
include/xrpl/nodestore/Scheduler.h:32
xrpl::node_store::FetchReport
Contains information about a fetch operation.
Definition
include/xrpl/nodestore/Scheduler.h:15
xrpl::node_store::FetchReport::fetchType
FetchType const fetchType
Definition
include/xrpl/nodestore/Scheduler.h:21
xrpl::node_store::FetchReport::elapsed
std::chrono::milliseconds elapsed
Definition
include/xrpl/nodestore/Scheduler.h:20
xrpl::node_store::Task
Derived classes perform scheduled tasks.
Definition
Task.h:9
xrpl::node_store::Task::performScheduledTask
virtual void performScheduledTask()=0
Performs the task.
Generated by
1.17.0