Changeset View
Changeset View
Standalone View
Standalone View
src/dbwrapper.h
Show First 20 Lines • Show All 305 Lines • ▼ Show 20 Lines | size_t EstimateSize(const K &key_begin, const K &key_end) const { | ||||
ssKey2 << key_end; | ssKey2 << key_end; | ||||
leveldb::Slice slKey1(ssKey1.data(), ssKey1.size()); | leveldb::Slice slKey1(ssKey1.data(), ssKey1.size()); | ||||
leveldb::Slice slKey2(ssKey2.data(), ssKey2.size()); | leveldb::Slice slKey2(ssKey2.data(), ssKey2.size()); | ||||
uint64_t size = 0; | uint64_t size = 0; | ||||
leveldb::Range range(slKey1, slKey2); | leveldb::Range range(slKey1, slKey2); | ||||
pdb->GetApproximateSizes(&range, 1, &size); | pdb->GetApproximateSizes(&range, 1, &size); | ||||
return size; | return size; | ||||
} | } | ||||
/** | |||||
* Compact a certain range of keys in the database. | |||||
*/ | |||||
template <typename K> | |||||
void CompactRange(const K &key_begin, const K &key_end) const { | |||||
CDataStream ssKey1(SER_DISK, CLIENT_VERSION), | |||||
ssKey2(SER_DISK, CLIENT_VERSION); | |||||
ssKey1.reserve(DBWRAPPER_PREALLOC_KEY_SIZE); | |||||
ssKey2.reserve(DBWRAPPER_PREALLOC_KEY_SIZE); | |||||
ssKey1 << key_begin; | |||||
ssKey2 << key_end; | |||||
leveldb::Slice slKey1(ssKey1.data(), ssKey1.size()); | |||||
leveldb::Slice slKey2(ssKey2.data(), ssKey2.size()); | |||||
pdb->CompactRange(&slKey1, &slKey2); | |||||
} | |||||
}; | }; | ||||
#endif // BITCOIN_DBWRAPPER_H | #endif // BITCOIN_DBWRAPPER_H |