]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Convert cacheDigestBitUtil to a method
authorAmos Jeffries <squid3@treenet.co.nz>
Fri, 6 Nov 2015 07:34:54 +0000 (23:34 -0800)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 6 Nov 2015 07:34:54 +0000 (23:34 -0800)
Also, convert from int output to double. Avoiding implicit cast wrap,
overflow and signed/unsigned data inaccuracy.

src/CacheDigest.cc
src/CacheDigest.h
src/peer_digest.cc
src/tests/stub_CacheDigest.cc

index 7ea910791bda3afe04e078f86ac052bda59a51cf..ed9700e038f3ab0748defb8c718ca8037717a25a 100644 (file)
@@ -192,13 +192,12 @@ cacheDigestStats(const CacheDigest * cd, CacheDigestStats * stats)
     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
index 2611d7ceac2b2eb7d1cab6ddc7c3828114b8230e..ee5d383b852d784cf4cc8ebe17caf9857b921c6e 100644 (file)
@@ -40,6 +40,9 @@ public:
     /// \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);
@@ -54,7 +57,6 @@ public:
     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);
index 8b235335c86740d9880c8a0d58d0403380e0b7f2..12db88d9c0ba95643a8db99f7e40b7678413506e 100644 (file)
@@ -1024,12 +1024,11 @@ static int
 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;
     }
 
index 3a615d149db651973fb0abc3621d64caf3b8ab99..60202798d8c20fe32d74a7390c06944484622e10 100644 (file)
@@ -25,7 +25,7 @@ void CacheDigest::updateCapacity(int) STUB
 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