stats->bseq_count = seq_count;
}
-int
-cacheDigestBitUtil(const CacheDigest * cd)
+double
+CacheDigest::usedMaskPercent() const
{
CacheDigestStats stats;
- assert(cd);
- cacheDigestStats(cd, &stats);
- return xpercentInt(stats.bit_on_count, stats.bit_count);
+ cacheDigestStats(this, &stats);
+ return xpercent(stats.bit_on_count, stats.bit_count);
}
void
/// \returns true if the key belongs to the digest
bool test(const cache_key * key) const;
+ /// percentage of mask bits which are used
+ double usedMaskPercent() const;
+
/// calculate the size of mask required to digest up to
/// a specified capacity and bitsize.
static size_t CalcMaskSize(int cap, int bpe);
int del_count; /* number of deletions performed so far */
};
-int cacheDigestBitUtil(const CacheDigest * cd);
void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit);
void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label);
void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
peerDigestUseful(const PeerDigest * pd)
{
/* TODO: we should calculate the prob of a false hit instead of bit util */
- const int bit_util = cacheDigestBitUtil(pd->cd);
+ const auto bit_util = pd->cd->usedMaskPercent();
- if (bit_util > 65) {
+ if (bit_util > 65.0) {
debugs(72, DBG_CRITICAL, "Warning: " << pd->host <<
- " peer digest has too many bits on (" << bit_util << "%%).");
-
+ " peer digest has too many bits on (" << bit_util << "%).");
return 0;
}
bool CacheDigest::test(const cache_key *) const STUB_RETVAL(false)
void CacheDigest::add(const cache_key *) STUB
void CacheDigest::remove(const cache_key *) STUB
-int cacheDigestBitUtil(const CacheDigest *) STUB_RETVAL(0)
+double CacheDigest::usedMaskPercent() const STUB_RETVAL(0.0)
void cacheDigestGuessStatsUpdate(CacheDigestGuessStats *, int, int) STUB
void cacheDigestGuessStatsReport(const CacheDigestGuessStats *, StoreEntry *, const char *) STUB
void cacheDigestReport(CacheDigest *, const char *, StoreEntry *) STUB