20 #ifndef RIPPLE_APP_DATA_DATABASECON_H_INCLUDED
21 #define RIPPLE_APP_DATA_DATABASECON_H_INCLUDED
23 #include <ripple/app/main/DBInit.h>
24 #include <ripple/core/Config.h>
25 #include <ripple/core/SociDB.h>
26 #include <boost/filesystem/path.hpp>
52 :
session_(std::move(rhs.session_)),
lock_(std::move(rhs.lock_))
75 explicit operator bool()
const
86 explicit Setup() =
default;
113 template <std::
size_t N, std::
size_t M>
121 setup.standAlone && !setup.reporting &&
122 setup.startUp !=
Config::LOAD &&
123 setup.startUp !=
Config::LOAD_FILE &&
124 setup.startUp !=
Config::REPLAY
126 : (setup.dataDir / dbName),
127 setup.commonPragma(),
134 template <std::
size_t N, std::
size_t M>
146 template <std::
size_t N, std::
size_t M>
148 boost::filesystem::path
const& dataDir,
152 :
DatabaseCon(dataDir / dbName, nullptr, pragma, initSQL)
157 template <std::
size_t N, std::
size_t M>
159 boost::filesystem::path
const& dataDir,
187 template <std::
size_t N, std::
size_t M>
189 boost::filesystem::path
const& pPath,
199 for (
auto const& p : *commonPragma)
201 soci::statement st =
session_->prepare << p;
205 for (
auto const& p : pragma)
207 soci::statement st =
session_->prepare << p;
210 for (
auto const& sql : initSQL)
212 soci::statement st =
session_->prepare << sql;
static std::unique_ptr< std::vector< std::string > const > globalPragma
DatabaseCon(boost::filesystem::path const &pPath, std::vector< std::string > const *commonPragma, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &dbName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL, CheckpointerSetup const &checkpointerSetup)
Manages partitions for logging.
DatabaseCon::Setup setup_DatabaseCon(Config const &c, std::optional< beast::Journal > j=std::nullopt)
Config::StartUpType startUp
LockedSociSession()=delete
std::shared_ptr< Checkpointer > checkpointerFromId(std::uintptr_t id)
boost::filesystem::path dataDir
std::shared_ptr< soci::session > session_
std::vector< std::string > const * commonPragma() const
void setupCheckpointing(JobQueue *, Logs &)
LockedSociSession::mutex lock_
LockedSociSession checkoutDb()
const std::shared_ptr< soci::session > session_
soci::session * operator->()
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &dbName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
DatabaseCon(Setup const &setup, std::string const &dbName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL, CheckpointerSetup const &checkpointerSetup)
soci::session & operator*()
A pool of threads to perform work.
soci::session & getSession()
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
LockedSociSession(LockedSociSession &&rhs) noexcept
DatabaseCon(Setup const &setup, std::string const &dbName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
LockedSociSession & operator=(LockedSociSession const &rhs)=delete
LockedSociSession(std::shared_ptr< soci::session > it, mutex &m)
std::shared_ptr< Checkpointer > checkpointer_
std::unique_lock< mutex > lock_
void open(soci::session &s, BasicConfig const &config, std::string const &dbName)
Open a soci session.