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>
27 #include <boost/optional.hpp>
52 :
session_(std::move(rhs.session_)),
lock_(std::move(rhs.lock_))
75 explicit operator bool()
const
86 explicit Setup() =
default;
112 template <std::
size_t N, std::
size_t M>
120 setup.standAlone && setup.startUp !=
Config::LOAD &&
121 setup.startUp !=
Config::LOAD_FILE &&
122 setup.startUp !=
Config::REPLAY
124 : (setup.dataDir / dbName),
125 setup.commonPragma(),
132 template <std::
size_t N, std::
size_t M>
144 template <std::
size_t N, std::
size_t M>
146 boost::filesystem::path
const& dataDir,
150 :
DatabaseCon(dataDir / dbName, nullptr, pragma, initSQL)
155 template <std::
size_t N, std::
size_t M>
157 boost::filesystem::path
const& dataDir,
185 template <std::
size_t N, std::
size_t M>
187 boost::filesystem::path
const& pPath,
197 for (
auto const& p : *commonPragma)
199 soci::statement st =
session_->prepare << p;
203 for (
auto const& p : pragma)
205 soci::statement st =
session_->prepare << p;
208 for (
auto const& sql : initSQL)
210 soci::statement st =
session_->prepare << sql;
235 boost::optional<beast::Journal> j = boost::none);
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.
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()
DatabaseCon::Setup setup_DatabaseCon(Config const &c, boost::optional< beast::Journal > j=boost::none)
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.