1#ifndef XRPL_APP_DATA_DATABASECON_H_INCLUDED
2#define XRPL_APP_DATA_DATABASECON_H_INCLUDED
4#include <xrpld/app/main/DBInit.h>
5#include <xrpld/core/Config.h>
6#include <xrpld/core/SociDB.h>
7#include <xrpld/perflog/PerfLog.h>
9#include <boost/filesystem/path.hpp>
36 :
session_(std::move(rhs.session_)),
lock_(std::move(rhs.lock_))
85 "ripple::DatabaseCon::Setup::commonPragma : consistent global "
102 template <std::
size_t N, std::
size_t M>
111 setup.standAlone && setup.startUp !=
Config::LOAD &&
112 setup.startUp !=
Config::LOAD_FILE &&
113 setup.startUp !=
Config::REPLAY
115 : (setup.dataDir / dbName),
116 setup.commonPragma(),
124 template <std::
size_t N, std::
size_t M>
132 :
DatabaseCon(setup, dbName, pragma, initSQL, journal)
137 template <std::
size_t N, std::
size_t M>
139 boost::filesystem::path
const& dataDir,
144 :
DatabaseCon(dataDir / dbName, nullptr, pragma, initSQL, journal)
149 template <std::
size_t N, std::
size_t M>
151 boost::filesystem::path
const& dataDir,
157 :
DatabaseCon(dataDir, dbName, pragma, initSQL, journal)
173 using namespace std::chrono_literals;
187 template <std::
size_t N, std::
size_t M>
189 boost::filesystem::path
const& pPath,
198 for (
auto const& p : pragma)
200 soci::statement st =
session_->prepare << p;
206 for (
auto const& p : *commonPragma)
208 soci::statement st =
session_->prepare << p;
213 for (
auto const& sql : initSQL)
215 soci::statement st =
session_->prepare << sql;
A generic endpoint for log messages.
void setupCheckpointing(JobQueue *, Logs &)
LockedSociSession checkoutDb()
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &dbName, std::array< std::string, N > const &pragma, std::array< char const *, M > const &initSQL, CheckpointerSetup const &checkpointerSetup, beast::Journal journal)
DatabaseCon(Setup const &setup, std::string const &dbName, std::array< std::string, N > const &pragma, std::array< char const *, M > const &initSQL, CheckpointerSetup const &checkpointerSetup, beast::Journal journal)
LockedSociSession::mutex lock_
DatabaseCon(Setup const &setup, std::string const &dbName, std::array< std::string, N > const &pragma, std::array< char const *, M > const &initSQL, beast::Journal journal)
std::shared_ptr< soci::session > const session_
DatabaseCon(boost::filesystem::path const &pPath, std::vector< std::string > const *commonPragma, std::array< std::string, N > const &pragma, std::array< char const *, M > const &initSQL, beast::Journal journal)
std::shared_ptr< Checkpointer > checkpointer_
soci::session & getSession()
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &dbName, std::array< std::string, N > const &pragma, std::array< char const *, M > const &initSQL, beast::Journal journal)
A pool of threads to perform work.
LockedSociSession & operator=(LockedSociSession const &rhs)=delete
std::unique_lock< mutex > lock_
LockedSociSession(LockedSociSession &&rhs) noexcept
soci::session & operator*()
LockedSociSession()=delete
LockedSociSession(LockedSociSession const &rhs)=delete
LockedSociSession(std::shared_ptr< soci::session > it, mutex &m)
std::shared_ptr< soci::session > session_
soci::session * operator->()
Manages partitions for logging.
auto measureDurationAndLog(Func &&func, std::string const &actionDescription, std::chrono::duration< Rep, Period > maxDelay, beast::Journal const &journal)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
DatabaseCon::Setup setup_DatabaseCon(Config const &c, std::optional< beast::Journal > j=std::nullopt)
@ open
We haven't closed our ledger yet, but others might have.
std::shared_ptr< Checkpointer > checkpointerFromId(std::uintptr_t id)
boost::filesystem::path dataDir
static std::unique_ptr< std::vector< std::string > const > globalPragma
std::vector< std::string > const * commonPragma() const
std::array< std::string, 1 > lgrPragma
Config::StartUpType startUp
std::array< std::string, 4 > txPragma