Clean SOCI code.

* Throw exception rather than SEGV.
* Hide details of checkpointing from clients.
* Restrict to 80 columns and minor style tweaks.
This commit is contained in:
Tom Ritchford
2015-04-02 12:51:40 -04:00
committed by Nik Bougalis
parent 1b8c77eee0
commit 03d1c0ed21
4 changed files with 196 additions and 171 deletions

View File

@@ -25,11 +25,11 @@
namespace ripple {
DatabaseCon::DatabaseCon (Setup const& setup,
std::string const& strName,
const char* initStrings[],
int initCount)
:session_(std::make_shared<soci::session>())
DatabaseCon::DatabaseCon (
Setup const& setup,
std::string const& strName,
const char* initStrings[],
int initCount)
{
auto const useTempFiles // Use temporary files or regular DB files?
= setup.standAlone &&
@@ -39,13 +39,13 @@ DatabaseCon::DatabaseCon (Setup const& setup,
boost::filesystem::path pPath = useTempFiles
? "" : (setup.dataDir / strName);
open(*session_, "sqlite", pPath.string());
open (session_, "sqlite", pPath.string());
for (int i = 0; i < initCount; ++i)
{
try
{
*session_ << initStrings[i];
session_ << initStrings[i];
}
catch (soci::soci_error&)
{
@@ -67,6 +67,9 @@ DatabaseCon::Setup setup_DatabaseCon (Config const& c)
void DatabaseCon::setupCheckpointing (JobQueue* q)
{
walCheckpointer_ = std::make_unique<WALCheckpointer> (session_, q);
if (! q)
throw std::logic_error ("No JobQueue");
checkpointer_ = makeCheckpointer (session_, *q);
}
} // ripple