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>
37 template <
class T,
class TMutex>
52 :
it_(rhs.it_),
lock_(std::move(rhs.lock_))
75 explicit operator bool()
const
88 explicit Setup() =
default;
108 template <std::
size_t N, std::
size_t M>
116 setup.standAlone && setup.startUp !=
Config::LOAD &&
117 setup.startUp !=
Config::LOAD_FILE &&
118 setup.startUp !=
Config::REPLAY
120 : (setup.dataDir / DBName),
121 setup.commonPragma(),
127 template <std::
size_t N, std::
size_t M>
129 boost::filesystem::path
const& dataDir,
133 :
DatabaseCon(dataDir / DBName, nullptr, pragma, initSQL)
153 template <std::
size_t N, std::
size_t M>
155 boost::filesystem::path
const& pPath,
164 for (
auto const& p : *commonPragma)
166 soci::statement st =
session_.prepare << p;
170 for (
auto const& p : pragma)
172 soci::statement st =
session_.prepare << p;
175 for (
auto const& sql : initSQL)
177 soci::statement st =
session_.prepare << sql;
191 boost::optional<beast::Journal> j = boost::none);
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &DBName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
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)
Manages partitions for logging.
LockedPointer< soci::session, std::recursive_mutex > LockedSociSession
DatabaseCon(Setup const &setup, std::string const &DBName, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
Config::StartUpType startUp
boost::filesystem::path dataDir
LockedPointer(T *it, mutex &m)
std::vector< std::string > const * commonPragma() const
void setupCheckpointing(JobQueue *, Logs &)
LockedSociSession::mutex lock_
LockedPointer(LockedPointer &&rhs) noexcept
std::unique_lock< mutex > lock_
LockedSociSession checkoutDb()
A pool of threads to perform work.
soci::session & getSession()
LockedPointer & operator=(LockedPointer const &rhs)=delete
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.
std::unique_ptr< Checkpointer > checkpointer_
void open(soci::session &s, BasicConfig const &config, std::string const &dbName)
Open a soci session.