#pragma once #include #include #include #include #include #include #include namespace xrpl { class Section; } // namespace xrpl namespace xrpl::node_store { /** * 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 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 createInstance( size_t keyBytes, Section const& parameters, std::size_t burstSize, Scheduler& scheduler, nudb::context& context, beast::Journal journal) { return {}; } }; } // namespace xrpl::node_store