 |
Bitcoin Core
22.99.0
P2P Digital Currency
|
Go to the documentation of this file.
6 #ifndef BITCOIN_WALLET_DB_H
7 #define BITCOIN_WALLET_DB_H
40 virtual void Flush() = 0;
41 virtual void Close() = 0;
43 template <
typename K,
typename T>
44 bool Read(
const K& key, T& value)
51 if (!
ReadKey(std::move(ssKey), ssValue))
return false;
55 }
catch (
const std::exception&) {
60 template <
typename K,
typename T>
61 bool Write(
const K& key,
const T& value,
bool fOverwrite =
true)
71 return WriteKey(std::move(ssKey), std::move(ssValue), fOverwrite);
91 return HasKey(std::move(ssKey));
112 virtual void Open() = 0;
117 virtual void AddRef() = 0;
123 virtual bool Rewrite(
const char* pszSkip=
nullptr) = 0;
127 virtual bool Backup(
const std::string& strDest)
const = 0;
131 virtual void Flush() = 0;
135 virtual void Close() = 0;
147 virtual std::string
Format() = 0;
155 virtual std::unique_ptr<DatabaseBatch>
MakeBatch(
bool flush_on_close =
true) = 0;
187 bool Rewrite(
const char* pszSkip=
nullptr)
override {
return true; }
188 bool Backup(
const std::string& strDest)
const override {
return true; }
194 std::string
Filename()
override {
return "dummy"; }
195 std::string
Format()
override {
return "dummy"; }
196 std::unique_ptr<DatabaseBatch>
MakeBatch(
bool flush_on_close =
true)
override {
return std::make_unique<DummyBatch>(); }
238 #endif // BITCOIN_WALLET_DB_H
An instance of this class represents one database.
virtual bool StartCursor()=0
std::atomic< int > m_refcount
Counts the number of active database users to be sure that the database is not closed while someone i...
std::vector< fs::path > ListDatabases(const fs::path &wallet_dir)
Recursively list database paths in directory.
virtual bool ReadAtCursor(CDataStream &ssKey, CDataStream &ssValue, bool &complete)=0
virtual bool HasKey(CDataStream &&key)=0
virtual bool Rewrite(const char *pszSkip=nullptr)=0
Rewrite the entire database on disk, with the exception of key pszSkip if non-zero.
fs::path BDBDataFile(const fs::path &wallet_path)
DatabaseBatch & operator=(const DatabaseBatch &)=delete
void Open() override
Open the database if it is not already opened.
virtual void Close()=0
Flush to the database file and close the database.
RAII class that provides access to a WalletDatabase.
bool Read(const K &key, T &value)
virtual void Flush()=0
Make sure all changes are flushed to database file.
bool StartCursor() override
virtual bool TxnBegin()=0
virtual bool TxnCommit()=0
bool IsSQLiteFile(const fs::path &path)
bool WriteKey(CDataStream &&key, CDataStream &&value, bool overwrite=true) override
int64_t nLastWalletUpdate
virtual bool Backup(const std::string &strDest) const =0
Back up the entire database to a file.
std::string Filename() override
Return path to main database file for logs and error messages.
std::unique_ptr< WalletDatabase > MakeDatabase(const fs::path &path, const DatabaseOptions &options, DatabaseStatus &status, bilingual_str &error)
void CloseCursor() override
WalletDatabase()
Create dummy DB handle.
std::basic_string< char, std::char_traits< char >, secure_allocator< char > > SecureString
virtual void IncrementUpdateCounter()=0
virtual std::unique_ptr< DatabaseBatch > MakeBatch(bool flush_on_close=true)=0
Make a DatabaseBatch connected to this database.
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
RAII class that provides access to a DummyDatabase.
std::optional< DatabaseFormat > require_format
bool HasKey(CDataStream &&key) override
void SplitWalletPath(const fs::path &wallet_path, fs::path &env_directory, std::string &database_filename)
virtual bool TxnAbort()=0
bool Write(const K &key, const T &value, bool fOverwrite=true)
void IncrementUpdateCounter() override
@ FAILED_INVALID_BACKUP_FILE
bool Backup(const std::string &strDest) const override
Back up the entire database to a file.
void reserve(size_type n)
virtual std::string Format()=0
virtual void AddRef()=0
Indicate the a new database user has began using the database.
virtual bool WriteKey(CDataStream &&key, CDataStream &&value, bool overwrite=true)=0
std::atomic< unsigned int > nUpdateCounter
bool Rewrite(const char *pszSkip=nullptr) override
Rewrite the entire database on disk, with the exception of key pszSkip if non-zero.
void AddRef() override
Indicate the a new database user has began using the database.
void Flush() override
Make sure all changes are flushed to database file.
void Close() override
Flush to the database file and close the database.
A dummy WalletDatabase that does nothing and never fails.
virtual std::string Filename()=0
Return path to main database file for logs and error messages.
virtual void ReloadDbEnv()=0
bool ReadAtCursor(CDataStream &ssKey, CDataStream &ssValue, bool &complete) override
virtual void CloseCursor()=0
static const int CLIENT_VERSION
bitcoind-res.rc includes this file, but it cannot cope with real c++ code.
virtual bool PeriodicFlush()=0
virtual void RemoveRef()=0
Indicate that database user has stopped using the database and that it could be flushed or closed.
void RemoveRef() override
Indicate that database user has stopped using the database and that it could be flushed or closed.
bool IsBDBFile(const fs::path &path)
virtual bool ReadKey(CDataStream &&key, CDataStream &value)=0
Double ended buffer combining vector and stream-like interfaces.
bool ReadKey(CDataStream &&key, CDataStream &value) override
virtual void Open()=0
Open the database if it is not already opened.
bool error(const char *fmt, const Args &... args)
virtual bool EraseKey(CDataStream &&key)=0
SecureString create_passphrase
std::unique_ptr< DatabaseBatch > MakeBatch(bool flush_on_close=true) override
Make a DatabaseBatch connected to this database.
bool PeriodicFlush() override
bool Exists(const K &key)
void ReloadDbEnv() override
bool EraseKey(CDataStream &&key) override
std::string Format() override
bool TxnCommit() override
unsigned int nLastFlushed
virtual ~WalletDatabase()
fs::path SQLiteDataFile(const fs::path &path)