Files
rippled/include/xrpl/nodestore/Factory.h
2026-07-13 10:40:40 +00:00

74 lines
1.8 KiB
C++

#pragma once
#include <xrpl/beast/utility/Journal.h>
#include <xrpl/nodestore/Backend.h>
#include <xrpl/nodestore/Scheduler.h>
#include <nudb/context.hpp>
#include <cstddef>
#include <memory>
#include <string>
namespace xrpl {
class Section;
} // namespace xrpl
namespace xrpl::NodeStore {
/**
* Base class for backend factories.
*/
class Factory
{
public:
virtual ~Factory() = default;
/**
* Retrieve the name of this factory.
*/
[[nodiscard]] virtual std::string
getName() const = 0;
/**
* Create an instance of this factory's backend.
*
* @param keyBytes The fixed number of bytes per key.
* @param parameters A set of key/value configuration pairs.
* @param burstSize Backend burst size in bytes.
* @param scheduler The scheduler to use for running tasks.
* @return A pointer to the Backend object.
*/
virtual std::unique_ptr<Backend>
createInstance(
size_t keyBytes,
Section const& parameters,
std::size_t burstSize,
Scheduler& scheduler,
beast::Journal journal) = 0;
/**
* Create an instance of this factory's backend.
*
* @param keyBytes The fixed number of bytes per key.
* @param parameters A set of key/value configuration pairs.
* @param burstSize Backend burst size in bytes.
* @param scheduler The scheduler to use for running tasks.
* @param context The context used by database.
* @return A pointer to the Backend object.
*/
virtual std::unique_ptr<Backend>
createInstance(
size_t keyBytes,
Section const& parameters,
std::size_t burstSize,
Scheduler& scheduler,
nudb::context& context,
beast::Journal journal)
{
return {};
}
};
} // namespace xrpl::NodeStore