5 #ifndef BITCOIN_DBWRAPPER_H 6 #define BITCOIN_DBWRAPPER_H 72 template <
typename K,
typename V>
92 size_estimate += 3 + (slKey.size() > 127) + slKey.size() + (slValue.size() > 127) + slValue.size();
137 template<
typename K>
void Seek(
const K&
key) {
152 }
catch (
const std::exception&) {
164 }
catch (
const std::exception&) {
224 CDBWrapper(
const fs::path& path,
size_t nCacheSize,
bool fMemory =
false,
bool fWipe =
false,
bool obfuscate =
false);
230 template <
typename K,
typename V>
238 std::string strValue;
250 }
catch (
const std::exception&) {
256 template <
typename K,
typename V>
257 bool Write(
const K&
key,
const V& value,
bool fSync =
false)
264 template <
typename K>
272 std::string strValue;
283 template <
typename K>
352 #endif // BITCOIN_DBWRAPPER_H dbwrapper_error(const std::string &msg)
Definition: dbwrapper.h:25
leveldb::Env * penv
custom environment this database is using (may be nullptr in case of default environment)
Definition: dbwrapper.h:181
Definition: dbwrapper.cpp:241
Definition: serialize.h:176
CDataStream ssValue
Definition: dbwrapper.h:56
CDBWrapper(const fs::path &path, size_t nCacheSize, bool fMemory=false, bool fWipe=false, bool obfuscate=false)
Definition: dbwrapper.cpp:117
static const unsigned int OBFUSCATE_KEY_NUM_BYTES
the length of the obfuscate key in number of bytes
Definition: dbwrapper.h:211
Definition: iterator.h:23
void Next()
Definition: dbwrapper.cpp:239
Definition: dbwrapper.h:117
virtual Slice key() const =0
virtual void CompactRange(const Slice *begin, const Slice *end)=0
virtual Slice value() const =0
const CDBWrapper & parent
Definition: dbwrapper.h:120
static const size_t DBWRAPPER_PREALLOC_KEY_SIZE
Definition: dbwrapper.h:19
static const std::string OBFUSCATE_KEY_KEY
the key under which the obfuscation key is stored
Definition: dbwrapper.h:208
static void LogPrintf(const char *fmt, const Args &... args)
Definition: logging.h:144
leveldb::WriteBatch batch
Definition: dbwrapper.h:53
void Xor(const std::vector< unsigned char > &key)
Definition: streams.h:476
bool GetKey(K &key)
Definition: dbwrapper.h:147
void CompactRange(const K &key_begin, const K &key_end) const
Definition: dbwrapper.h:338
void HandleError(const leveldb::Status &status)
Definition: dbwrapper.cpp:243
virtual void Seek(const Slice &target)=0
leveldb::DB * pdb
the database itself
Definition: dbwrapper.h:199
~CDBIterator()
Definition: dbwrapper.cpp:236
void Clear()
Definition: dbwrapper.h:66
bool Write(const K &key, const V &value, bool fSync=false)
Definition: dbwrapper.h:257
void reserve(size_type n)
Definition: streams.h:297
std::string m_name
the name of this database
Definition: dbwrapper.h:202
void Erase(const K &key)
Definition: dbwrapper.h:98
value_type * data()
Definition: streams.h:303
Definition: options.h:187
Definition: write_batch.h:31
leveldb::Options options
database options used
Definition: dbwrapper.h:184
std::string ToString() const
Definition: status.cc:36
bool Flush()
Definition: dbwrapper.h:297
void Delete(const Slice &key)
Definition: write_batch.cc:105
void clear()
Definition: streams.h:300
virtual Status Get(const ReadOptions &options, const Slice &key, std::string *value)=0
unsigned long long uint64_t
Definition: stdint.h:22
Definition: dbwrapper.h:22
bool WriteBatch(CDBBatch &batch, bool fSync=false)
Definition: dbwrapper.cpp:183
size_t SizeEstimate() const
Definition: dbwrapper.h:114
void Clear()
Definition: write_batch.cc:37
~CDBWrapper()
Definition: dbwrapper.cpp:169
void Write(const K &key, const V &value)
Definition: dbwrapper.h:73
virtual void GetApproximateSizes(const Range *range, int n, uint64_t *sizes)=0
Definition: streams.h:203
leveldb::WriteOptions syncoptions
options used when sync writing to the database
Definition: dbwrapper.h:196
leveldb::WriteOptions writeoptions
options used when writing to the database
Definition: dbwrapper.h:193
size_t EstimateSize(const K &key_begin, const K &key_end) const
Definition: dbwrapper.h:319
Definition: options.h:161
leveldb::ReadOptions readoptions
options used when reading from the database
Definition: dbwrapper.h:187
const std::vector< unsigned char > & GetObfuscateKey(const CDBWrapper &w)
Definition: dbwrapper.cpp:253
unsigned int GetValueSize()
Definition: dbwrapper.h:170
static const size_t DBWRAPPER_PREALLOC_VALUE_SIZE
Definition: dbwrapper.h:20
Definition: dbwrapper.h:176
bool Valid() const
Definition: dbwrapper.cpp:237
leveldb::ReadOptions iteroptions
options used when iterating over values of the database
Definition: dbwrapper.h:190
CDBWrapper & operator=(const CDBWrapper &)=delete
bool ok() const
Definition: status.h:52
virtual Iterator * NewIterator(const ReadOptions &options)=0
bool Exists(const K &key) const
Definition: dbwrapper.h:265
CDBBatch(const CDBWrapper &_parent)
Definition: dbwrapper.h:64
size_t size_estimate
Definition: dbwrapper.h:58
CDBIterator * NewIterator()
Definition: dbwrapper.h:308
void Seek(const K &key)
Definition: dbwrapper.h:137
bool Erase(const K &key, bool fSync=false)
Definition: dbwrapper.h:284
bool Sync()
Definition: dbwrapper.h:302
size_t DynamicMemoryUsage() const
Definition: dbwrapper.cpp:200
bool GetValue(V &value)
Definition: dbwrapper.h:158
bool IsEmpty()
Definition: dbwrapper.cpp:229
const char * data() const
Definition: slice.h:40
std::vector< unsigned char > CreateObfuscateKey() const
Definition: dbwrapper.cpp:221
Definition: dbwrapper.h:47
size_type size() const
Definition: streams.h:294
size_t size() const
Definition: slice.h:43
static const int CLIENT_VERSION
Definition: clientversion.h:38
bool IsNotFound() const
Definition: status.h:55
CDataStream ssKey
Definition: dbwrapper.h:55
const CDBWrapper & parent
Definition: dbwrapper.h:52
CDBIterator(const CDBWrapper &_parent, leveldb::Iterator *_piter)
Definition: dbwrapper.h:129
bool Read(const K &key, V &value) const
Definition: dbwrapper.h:231
void Put(const Slice &key, const Slice &value)
Definition: write_batch.cc:98
void SeekToFirst()
Definition: dbwrapper.cpp:238
leveldb::Iterator * piter
Definition: dbwrapper.h:121
std::vector< unsigned char > obfuscate_key
a key used for optional XOR-obfuscation of the database
Definition: dbwrapper.h:205