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>
36 template<
class T,
class TMutex>
50 :
it_ (rhs.it_),
lock_ (std::move (rhs.lock_))
69 explicit operator bool()
const
82 explicit Setup() =
default;
89 template<std::
size_t N, std::
size_t M>
97 auto const useTempFiles =
102 boost::filesystem::path pPath =
103 useTempFiles ?
"" : (setup.
dataDir / DBName);
105 init(pPath, pragma, initSQL);
108 template<std::
size_t N, std::
size_t M>
110 boost::filesystem::path
const& dataDir,
115 init((dataDir / DBName), pragma, initSQL);
132 template<std::
size_t N, std::
size_t M>
134 init(boost::filesystem::path
const& pPath,
140 for (
auto const& p : pragma)
142 soci::statement st =
session_.prepare << p;
145 for (
auto const& sql : initSQL)
147 soci::statement st =
session_.prepare << sql;
DatabaseCon(boost::filesystem::path const &dataDir, std::string const &DBName, 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)
void setupCheckpointing(JobQueue *, Logs &)
LockedSociSession::mutex lock_
LockedPointer(LockedPointer &&rhs) noexcept
std::unique_lock< mutex > lock_
DatabaseCon::Setup setup_DatabaseCon(Config const &c)
LockedSociSession checkoutDb()
void init(boost::filesystem::path const &pPath, std::array< char const *, N > const &pragma, std::array< char const *, M > const &initSQL)
A pool of threads to perform work.
soci::session & getSession()
LockedPointer & operator=(LockedPointer const &rhs)=delete
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.