diff --git a/src/db.cpp b/src/db.cpp index edbff6fd4..24206d34e 100644 --- a/src/db.cpp +++ b/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); 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) { int ret; fReadOnly = (!strchr(pszMode, '+') && !strchr(pszMode, 'w')); - if (pszFile == NULL) + if (strFilename.empty()) return; bool fCreate = strchr(pszMode, 'c') != NULL; @@ -242,7 +242,7 @@ CDB::CDB(const char *pszFile, const char* pszMode) : if (!bitdb.Open(GetDataDir())) throw runtime_error("CDB : Failed to open database environment."); - strFile = pszFile; + strFile = strFilename; ++bitdb.mapFileUseCount[strFile]; pdb = bitdb.mapDb[strFile]; if (pdb == NULL) @@ -255,14 +255,14 @@ CDB::CDB(const char *pszFile, const char* pszMode) : DbMpoolFile*mpf = pdb->get_mpf(); ret = mpf->set_flags(DB_MPOOL_NOFILE, 1); 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 - fMockDb ? NULL : pszFile, // Filename - fMockDb ? pszFile : "main", // Logical db name - DB_BTREE, // Database type - nFlags, // Flags + ret = pdb->open(NULL, // Txn pointer + fMockDb ? NULL : strFile.c_str(), // Filename + fMockDb ? strFile.c_str() : "main", // Logical db name + DB_BTREE, // Database type + nFlags, // Flags 0); if (ret != 0) @@ -271,7 +271,7 @@ CDB::CDB(const char *pszFile, const char* pszMode) : pdb = NULL; --bitdb.mapFileUseCount[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"))) diff --git a/src/db.h b/src/db.h index 999750ff3..eab27f43a 100644 --- a/src/db.h +++ b/src/db.h @@ -69,7 +69,7 @@ public: bool Open(const boost::filesystem::path &path); void Close(); void Flush(bool fShutdown); - void CheckpointLSN(std::string strFile); + void CheckpointLSN(const std::string& strFile); void CloseDb(const std::string& strFile); bool RemoveDb(const std::string& strFile); @@ -96,11 +96,13 @@ protected: DbTxn *activeTxn; bool fReadOnly; - explicit CDB(const char* pszFile, const char* pszMode="r+"); + explicit CDB(const std::string& strFilename, const char* pszMode="r+"); ~CDB() { Close(); } + public: void Flush(); void Close(); + private: CDB(const CDB&); void operator=(const CDB&); diff --git a/src/walletdb.cpp b/src/walletdb.cpp index 03161250d..a84f44db0 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -242,9 +242,7 @@ void CWalletDB::ListAccountCreditDebit(const string& strAccount, listclose(); } - -DBErrors -CWalletDB::ReorderTransactions(CWallet* pwallet) +DBErrors CWalletDB::ReorderTransactions(CWallet* pwallet) { LOCK(pwallet->cs_wallet); // Old wallets didn't have any defined order for transactions diff --git a/src/walletdb.h b/src/walletdb.h index ce63bb0b9..2c5b608f3 100644 --- a/src/walletdb.h +++ b/src/walletdb.h @@ -75,13 +75,10 @@ public: class CWalletDB : public CDB { 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: - CWalletDB(const CWalletDB&); - void operator=(const CWalletDB&); -public: + bool WriteName(const std::string& strAddress, const std::string& strName); bool EraseName(const std::string& strAddress); @@ -119,19 +116,23 @@ public: bool WriteDestData(const std::string &address, const std::string &key, const std::string &value); /// Erase destination data tuple from wallet database bool EraseDestData(const std::string &address, const std::string &key); -private: - bool WriteAccountingEntry(const uint64_t nAccEntryNum, const CAccountingEntry& acentry); -public: + bool WriteAccountingEntry(const CAccountingEntry& acentry); int64_t GetAccountCreditDebit(const std::string& strAccount); void ListAccountCreditDebit(const std::string& strAccount, std::list& acentries); - DBErrors ReorderTransactions(CWallet*); + DBErrors ReorderTransactions(CWallet* pwallet); DBErrors LoadWallet(CWallet* pwallet); DBErrors FindWalletTx(CWallet* pwallet, std::vector& vTxHash, std::vector& vWtx); DBErrors ZapWalletTx(CWallet* pwallet, std::vector& vWtx); static bool Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys); static bool Recover(CDBEnv& dbenv, std::string filename); + +private: + CWalletDB(const CWalletDB&); + void operator=(const CWalletDB&); + + bool WriteAccountingEntry(const uint64_t nAccEntryNum, const CAccountingEntry& acentry); }; bool BackupWallet(const CWallet& wallet, const std::string& strDest);