xrpld
Loading...
Searching...
No Matches
xrpl::NodeStore::ManagerImp Class Reference

#include <ManagerImp.h>

Inheritance diagram for xrpl::NodeStore::ManagerImp:
Collaboration diagram for xrpl::NodeStore::ManagerImp:

Public Member Functions

 ManagerImp ()
 ~ManagerImp () override=default
Factoryfind (std::string const &name) override
 Return a pointer to the matching factory if it exists.
void insert (Factory &factory) override
 Add a factory.
void erase (Factory &factory) override
 Remove a factory.
std::unique_ptr< BackendmakeBackend (Section const &parameters, std::size_t burstSize, Scheduler &scheduler, beast::Journal journal) override
 Create a backend.
std::unique_ptr< DatabasemakeDatabase (std::size_t burstSize, Scheduler &scheduler, int readThreads, Section const &config, beast::Journal journal) override
 Construct a NodeStore database.

Static Public Member Functions

static ManagerImpinstance ()
static void missingBackend ()

Private Attributes

std::mutex mutex_
std::vector< Factory * > list_

Detailed Description

Definition at line 7 of file ManagerImp.h.

Constructor & Destructor Documentation

◆ ManagerImp()

xrpl::NodeStore::ManagerImp::ManagerImp ( )

Definition at line 57 of file ManagerImp.cpp.

◆ ~ManagerImp()

xrpl::NodeStore::ManagerImp::~ManagerImp ( )
overridedefault

Member Function Documentation

◆ instance()

ManagerImp & xrpl::NodeStore::ManagerImp::instance ( )
static

Definition at line 28 of file ManagerImp.cpp.

◆ missingBackend()

void xrpl::NodeStore::ManagerImp::missingBackend ( )
static

Definition at line 35 of file ManagerImp.cpp.

◆ find()

Factory * xrpl::NodeStore::ManagerImp::find ( std::string const & name)
overridevirtual

Return a pointer to the matching factory if it exists.

Parameters
nameThe name to match, performed case-insensitive.
Returns
nullptr if a match was not found.

Implements xrpl::NodeStore::Manager.

Definition at line 120 of file ManagerImp.cpp.

◆ insert()

void xrpl::NodeStore::ManagerImp::insert ( Factory & factory)
overridevirtual

Add a factory.

Implements xrpl::NodeStore::Manager.

Definition at line 103 of file ManagerImp.cpp.

◆ erase()

void xrpl::NodeStore::ManagerImp::erase ( Factory & factory)
overridevirtual

Remove a factory.

Implements xrpl::NodeStore::Manager.

Definition at line 110 of file ManagerImp.cpp.

◆ makeBackend()

std::unique_ptr< Backend > xrpl::NodeStore::ManagerImp::makeBackend ( Section const & parameters,
std::size_t burstSize,
Scheduler & scheduler,
beast::Journal journal )
overridevirtual

Create a backend.

Implements xrpl::NodeStore::Manager.

Definition at line 68 of file ManagerImp.cpp.

◆ makeDatabase()

std::unique_ptr< Database > xrpl::NodeStore::ManagerImp::makeDatabase ( std::size_t burstSize,
Scheduler & scheduler,
int readThreads,
Section const & backendParameters,
beast::Journal journal )
overridevirtual

Construct a NodeStore database.

The parameters are key value pairs passed to the backend. The 'type' key must exist, it defines the choice of backend. Most backends also require a 'path' field.

Some choices for 'type' are: HyperLevelDB, LevelDBFactory, SQLite, MDB

If the fastBackendParameter is omitted or empty, no ephemeral database is used. If the scheduler parameter is omitted or unspecified, a synchronous scheduler is used which performs all tasks immediately on the caller's thread.

Note
If the database cannot be opened or created, an exception is thrown.
Parameters
nameA diagnostic label for the database.
burstSizeBackend burst size in bytes.
schedulerThe scheduler to use for performing asynchronous tasks.
readThreadsThe number of async read threads to create
backendParametersThe parameter string for the persistent backend.
fastBackendParameters[optional] The parameter string for the ephemeral backend.
Returns
The opened database.

Implements xrpl::NodeStore::Manager.

Definition at line 89 of file ManagerImp.cpp.

Member Data Documentation

◆ mutex_

std::mutex xrpl::NodeStore::ManagerImp::mutex_
private

Definition at line 10 of file ManagerImp.h.

◆ list_

std::vector<Factory*> xrpl::NodeStore::ManagerImp::list_
private

Definition at line 11 of file ManagerImp.h.