diff options
author | Andrew Chow <achow101-github@achow101.com> | 2020-06-15 20:34:25 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2020-06-15 20:35:39 -0400 |
commit | 8f033642a8c6874184e297b97b951b9bd12ffd75 (patch) | |
tree | 0165173767e58873341b247e11b2f8d23f331275 /src/wallet/db.cpp | |
parent | 25a655794a0c495332dadedd88b87d694c1077c2 (diff) | |
download | bitcoin-8f033642a8c6874184e297b97b951b9bd12ffd75.tar.xz |
walletdb: moveonly: Move BerkeleyBatch Cursor and Txn funcs to cpp
Put the implementation in the cpp, not the h file.
Diffstat (limited to 'src/wallet/db.cpp')
-rw-r--r-- | src/wallet/db.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp index 99ad963f9a..5bf3f6dff6 100644 --- a/src/wallet/db.cpp +++ b/src/wallet/db.cpp @@ -761,6 +761,67 @@ void BerkeleyDatabase::ReloadDbEnv() } } +Dbc* BerkeleyBatch::GetCursor() +{ + if (!pdb) + return nullptr; + Dbc* pcursor = nullptr; + int ret = pdb->cursor(nullptr, &pcursor, 0); + if (ret != 0) + return nullptr; + return pcursor; +} + +int BerkeleyBatch::ReadAtCursor(Dbc* pcursor, CDataStream& ssKey, CDataStream& ssValue) +{ + // Read at cursor + SafeDbt datKey; + SafeDbt datValue; + int ret = pcursor->get(datKey, datValue, DB_NEXT); + if (ret != 0) + return ret; + else if (datKey.get_data() == nullptr || datValue.get_data() == nullptr) + return 99999; + + // Convert to streams + ssKey.SetType(SER_DISK); + ssKey.clear(); + ssKey.write((char*)datKey.get_data(), datKey.get_size()); + ssValue.SetType(SER_DISK); + ssValue.clear(); + ssValue.write((char*)datValue.get_data(), datValue.get_size()); + return 0; +} + +bool BerkeleyBatch::TxnBegin() +{ + if (!pdb || activeTxn) + return false; + DbTxn* ptxn = env->TxnBegin(); + if (!ptxn) + return false; + activeTxn = ptxn; + return true; +} + +bool BerkeleyBatch::TxnCommit() +{ + if (!pdb || !activeTxn) + return false; + int ret = activeTxn->commit(0); + activeTxn = nullptr; + return (ret == 0); +} + +bool BerkeleyBatch::TxnAbort() +{ + if (!pdb || !activeTxn) + return false; + int ret = activeTxn->abort(); + activeTxn = nullptr; + return (ret == 0); +} + std::string BerkeleyDatabaseVersion() { return DbEnv::version(nullptr, nullptr, nullptr); |