Browse Source

prefer const string& over char* in CDB and CWalletDB constructor

- also make parameter of CDBEnv::CheckpointLSN a constant reference
0.10
Philip Kaufmann 10 years ago
parent
commit
22d7e7014f
  1. 22
      src/db.cpp
  2. 6
      src/db.h
  3. 2
      src/walletdb.h

22
src/db.cpp

@ -215,7 +215,7 @@ bool CDBEnv::Salvage(std::string strFile, bool fAggressive,
} }
void CDBEnv::CheckpointLSN(std::string strFile) void CDBEnv::CheckpointLSN(const std::string& strFile)
{ {
dbenv.txn_checkpoint(0, 0, 0); dbenv.txn_checkpoint(0, 0, 0);
if (fMockDb) if (fMockDb)
@ -224,12 +224,12 @@ void CDBEnv::CheckpointLSN(std::string strFile)
} }
CDB::CDB(const char *pszFile, const char* pszMode) : CDB::CDB(const std::string& strFilename, const char* pszMode) :
pdb(NULL), activeTxn(NULL) pdb(NULL), activeTxn(NULL)
{ {
int ret; int ret;
fReadOnly = (!strchr(pszMode, '+') && !strchr(pszMode, 'w')); fReadOnly = (!strchr(pszMode, '+') && !strchr(pszMode, 'w'));
if (pszFile == NULL) if (strFilename.empty())
return; return;
bool fCreate = strchr(pszMode, 'c') != NULL; bool fCreate = strchr(pszMode, 'c') != NULL;
@ -242,7 +242,7 @@ CDB::CDB(const char *pszFile, const char* pszMode) :
if (!bitdb.Open(GetDataDir())) if (!bitdb.Open(GetDataDir()))
throw runtime_error("CDB : Failed to open database environment."); throw runtime_error("CDB : Failed to open database environment.");
strFile = pszFile; strFile = strFilename;
++bitdb.mapFileUseCount[strFile]; ++bitdb.mapFileUseCount[strFile];
pdb = bitdb.mapDb[strFile]; pdb = bitdb.mapDb[strFile];
if (pdb == NULL) if (pdb == NULL)
@ -255,14 +255,14 @@ CDB::CDB(const char *pszFile, const char* pszMode) :
DbMpoolFile*mpf = pdb->get_mpf(); DbMpoolFile*mpf = pdb->get_mpf();
ret = mpf->set_flags(DB_MPOOL_NOFILE, 1); ret = mpf->set_flags(DB_MPOOL_NOFILE, 1);
if (ret != 0) if (ret != 0)
throw runtime_error(strprintf("CDB : Failed to configure for no temp file backing for database %s", pszFile)); throw runtime_error(strprintf("CDB : Failed to configure for no temp file backing for database %s", strFile));
} }
ret = pdb->open(NULL, // Txn pointer ret = pdb->open(NULL, // Txn pointer
fMockDb ? NULL : pszFile, // Filename fMockDb ? NULL : strFile.c_str(), // Filename
fMockDb ? pszFile : "main", // Logical db name fMockDb ? strFile.c_str() : "main", // Logical db name
DB_BTREE, // Database type DB_BTREE, // Database type
nFlags, // Flags nFlags, // Flags
0); 0);
if (ret != 0) if (ret != 0)
@ -271,7 +271,7 @@ CDB::CDB(const char *pszFile, const char* pszMode) :
pdb = NULL; pdb = NULL;
--bitdb.mapFileUseCount[strFile]; --bitdb.mapFileUseCount[strFile];
strFile = ""; strFile = "";
throw runtime_error(strprintf("CDB : Error %d, can't open database %s", ret, pszFile)); throw runtime_error(strprintf("CDB : Error %d, can't open database %s", ret, strFile));
} }
if (fCreate && !Exists(string("version"))) if (fCreate && !Exists(string("version")))

6
src/db.h

@ -69,7 +69,7 @@ public:
bool Open(const boost::filesystem::path &path); bool Open(const boost::filesystem::path &path);
void Close(); void Close();
void Flush(bool fShutdown); void Flush(bool fShutdown);
void CheckpointLSN(std::string strFile); void CheckpointLSN(const std::string& strFile);
void CloseDb(const std::string& strFile); void CloseDb(const std::string& strFile);
bool RemoveDb(const std::string& strFile); bool RemoveDb(const std::string& strFile);
@ -96,11 +96,13 @@ protected:
DbTxn *activeTxn; DbTxn *activeTxn;
bool fReadOnly; bool fReadOnly;
explicit CDB(const char* pszFile, const char* pszMode="r+"); explicit CDB(const std::string& strFilename, const char* pszMode="r+");
~CDB() { Close(); } ~CDB() { Close(); }
public: public:
void Flush(); void Flush();
void Close(); void Close();
private: private:
CDB(const CDB&); CDB(const CDB&);
void operator=(const CDB&); void operator=(const CDB&);

2
src/walletdb.h

@ -75,7 +75,7 @@ public:
class CWalletDB : public CDB class CWalletDB : public CDB
{ {
public: public:
CWalletDB(std::string strFilename, const char* pszMode="r+") : CDB(strFilename.c_str(), pszMode) CWalletDB(const std::string& strFilename, const char* pszMode = "r+") : CDB(strFilename, pszMode)
{ {
} }
private: private:

Loading…
Cancel
Save