MCPcopy Create free account
hub / github.com/ElementsProject/elements / GetApproximateSizes

Method GetApproximateSizes

src/leveldb/db/db_impl.cc:1445–1461  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1443}
1444
1445void DBImpl::GetApproximateSizes(const Range* range, int n, uint64_t* sizes) {
1446 // TODO(opt): better implementation
1447 MutexLock l(&mutex_);
1448 Version* v = versions_->current();
1449 v->Ref();
1450
1451 for (int i = 0; i < n; i++) {
1452 // Convert user_key into a corresponding internal key.
1453 InternalKey k1(range[i].start, kMaxSequenceNumber, kValueTypeForSeek);
1454 InternalKey k2(range[i].limit, kMaxSequenceNumber, kValueTypeForSeek);
1455 uint64_t start = versions_->ApproximateOffsetOf(v, k1);
1456 uint64_t limit = versions_->ApproximateOffsetOf(v, k2);
1457 sizes[i] = (limit >= start ? limit - start : 0);
1458 }
1459
1460 v->Unref();
1461}
1462
1463// Default implementations of convenience methods that subclasses of DB
1464// can call if they wish

Callers 3

EstimateSizeMethod · 0.45
SizeMethod · 0.45

Calls 4

currentMethod · 0.80
RefMethod · 0.45
ApproximateOffsetOfMethod · 0.45
UnrefMethod · 0.45

Tested by 1

SizeMethod · 0.36