Files
rippled/include/xrpl/nodestore/Scheduler.h
Andrzej Budzanowski 29120dfcbd test: Migrate nodestore tests from Beast to GTest (#7292)
Co-authored-by: Marek Foss <marek.foss@neti-soft.com>
Co-authored-by: Alex Kremer <akremer@ripple.com>
2026-07-27 13:00:14 +00:00

75 lines
1.6 KiB
C++

#pragma once
#include <xrpl/nodestore/Task.h>
#include <chrono>
namespace xrpl::node_store {
enum class FetchType { Synchronous, Async };
/**
* Contains information about a fetch operation.
*/
struct FetchReport
{
explicit FetchReport(FetchType fetchType) : fetchType(fetchType)
{
}
std::chrono::milliseconds elapsed{};
FetchType const fetchType;
bool wasFound = false;
};
/**
* Contains information about a batch write operation.
*/
struct BatchWriteReport
{
explicit BatchWriteReport() = default;
std::chrono::milliseconds elapsed;
int writeCount;
};
/**
* Scheduling for asynchronous backend activity
*
* For improved performance, a backend has the option of performing writes
* in batches. These writes can be scheduled using the provided scheduler
* object.
*
* @see BatchWriter
*/
class Scheduler
{
public:
virtual ~Scheduler() = default;
/**
* Schedules a task.
* Depending on the implementation, the task may be invoked either on
* the current thread of execution, or an unspecified
* implementation-defined foreign thread.
*/
virtual void
scheduleTask(Task& task) = 0;
/**
* Reports completion of a fetch
* Allows the scheduler to monitor the node store's performance
*/
virtual void
onFetch(FetchReport const& report) = 0;
/**
* Reports the completion of a batch write
* Allows the scheduler to monitor the node store's performance
*/
virtual void
onBatchWrite(BatchWriteReport const& report) = 0;
};
} // namespace xrpl::node_store