From: Amos Jeffries Date: Thu, 5 Nov 2015 12:55:45 +0000 (-0800) Subject: Convert CacheDigest to MEMPROXY_CLASS X-Git-Tag: SQUID_4_0_3~18^2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e04fc9d36185939755a4aa9ba921591523d9f745;p=thirdparty%2Fsquid.git Convert CacheDigest to MEMPROXY_CLASS * Convert cacheDigestCreate to CacheDigest constructor * Update cacheDigestDestroy to use delete operator --- diff --git a/src/CacheDigest.cc b/src/CacheDigest.cc index 79b890c41c..c2814ce802 100644 --- a/src/CacheDigest.cc +++ b/src/CacheDigest.cc @@ -49,13 +49,16 @@ cacheDigestInit(CacheDigest * cd, int capacity, int bpe) << cd->mask_size << " bytes"); } -CacheDigest * -cacheDigestCreate(int capacity, int bpe) +CacheDigest::CacheDigest(int capacity, int bpe) : + mask(nullptr), + mask_size(0), + capacity(0), + bits_per_entry(0), + count(0), + del_count(0) { - CacheDigest *cd = (CacheDigest *)memAllocate(MEM_CACHE_DIGEST); assert(SQUID_MD5_DIGEST_LENGTH == 16); /* our hash functions rely on 16 byte keys */ - cacheDigestInit(cd, capacity, bpe); - return cd; + cacheDigestInit(this, capacity, bpe); } static void @@ -71,7 +74,7 @@ cacheDigestDestroy(CacheDigest * cd) { assert(cd); cacheDigestClean(cd); - memFree(cd, MEM_CACHE_DIGEST); + delete cd; } CacheDigest * @@ -79,7 +82,7 @@ cacheDigestClone(const CacheDigest * cd) { CacheDigest *clone; assert(cd); - clone = cacheDigestCreate(cd->capacity, cd->bits_per_entry); + clone = new CacheDigest(cd->capacity, cd->bits_per_entry); clone->count = cd->count; clone->del_count = cd->del_count; assert(cd->mask_size == clone->mask_size); diff --git a/src/CacheDigest.h b/src/CacheDigest.h index 14f928f2a8..b71c64a4cc 100644 --- a/src/CacheDigest.h +++ b/src/CacheDigest.h @@ -11,14 +11,18 @@ #ifndef SQUID_CACHEDIGEST_H_ #define SQUID_CACHEDIGEST_H_ +#include "mem/forward.h" #include "store_key_md5.h" class CacheDigestGuessStats; class StoreEntry; -// currently a POD class CacheDigest { + MEMPROXY_CLASS(CacheDigest); +public: + CacheDigest(int capacity, int bpe); + public: /* public, read-only */ char *mask; /* bit mask */ @@ -29,7 +33,6 @@ public: int del_count; /* number of deletions performed so far */ }; -CacheDigest *cacheDigestCreate(int capacity, int bpe); void cacheDigestDestroy(CacheDigest * cd); CacheDigest *cacheDigestClone(const CacheDigest * cd); void cacheDigestClear(CacheDigest * cd); diff --git a/src/mem/forward.h b/src/mem/forward.h index dcabaf6afb..a43425d4ba 100644 --- a/src/mem/forward.h +++ b/src/mem/forward.h @@ -46,9 +46,6 @@ typedef enum { MEM_64K_BUF, MEM_ACL_DENY_INFO_LIST, MEM_ACL_NAME_LIST, -#if USE_CACHE_DIGESTS - MEM_CACHE_DIGEST, -#endif MEM_CLIENT_INFO, MEM_LINK_LIST, MEM_DLINK_NODE, diff --git a/src/mem/old_api.cc b/src/mem/old_api.cc index 99a2489e0d..a0f864cfad 100644 --- a/src/mem/old_api.cc +++ b/src/mem/old_api.cc @@ -428,11 +428,6 @@ Mem::Init(void) memDataInit(MEM_ACL_DENY_INFO_LIST, "AclDenyInfoList", sizeof(AclDenyInfoList), 0); memDataInit(MEM_ACL_NAME_LIST, "acl_name_list", sizeof(AclNameList), 0); -#if USE_CACHE_DIGESTS - - memDataInit(MEM_CACHE_DIGEST, "CacheDigest", sizeof(CacheDigest), 0); -#endif - memDataInit(MEM_LINK_LIST, "link_list", sizeof(link_list), 10); memDataInit(MEM_DLINK_NODE, "dlink_node", sizeof(dlink_node), 10); memDataInit(MEM_DREAD_CTRL, "dread_ctrl", sizeof(dread_ctrl), 0); diff --git a/src/peer_digest.cc b/src/peer_digest.cc index 97cfbf1ae4..1ce8857e4f 100644 --- a/src/peer_digest.cc +++ b/src/peer_digest.cc @@ -1022,7 +1022,7 @@ peerDigestSetCBlock(PeerDigest * pd, const char *buf) if (!pd->cd) { debugs(72, 2, "creating " << host << " digest; size: " << cblock.mask_size << " (" << std::showpos << (int) (cblock.mask_size - freed_size) << ") bytes"); - pd->cd = cacheDigestCreate(cblock.capacity, cblock.bits_per_entry); + pd->cd = new CacheDigest(cblock.capacity, cblock.bits_per_entry); if (cblock.mask_size >= freed_size) statCounter.cd.memory += (cblock.mask_size - freed_size); diff --git a/src/store_digest.cc b/src/store_digest.cc index db7b2d6356..a9bf140286 100644 --- a/src/store_digest.cc +++ b/src/store_digest.cc @@ -107,7 +107,7 @@ storeDigestInit(void) return; } - store_digest = cacheDigestCreate(cap, Config.digest.bits_per_entry); + store_digest = new CacheDigest(cap, Config.digest.bits_per_entry); debugs(71, DBG_IMPORTANT, "Local cache digest enabled; rebuild/rewrite every " << (int) Config.digest.rebuild_period << "/" << (int) Config.digest.rewrite_period << " sec"); diff --git a/src/test_cache_digest.cc b/src/test_cache_digest.cc index b676088323..c10f48d0bb 100644 --- a/src/test_cache_digest.cc +++ b/src/test_cache_digest.cc @@ -256,7 +256,7 @@ cacheResetDigest(Cache * cache) hash = cache->hash; - cache->digest = cacheDigestCreate(cache->count + 1, 6); + cache->digest = new CacheDigest(cache->count + 1, 6); if (!cache->count) return; diff --git a/src/tests/stub_CacheDigest.cc b/src/tests/stub_CacheDigest.cc index d808a2c81b..fca5aff55d 100644 --- a/src/tests/stub_CacheDigest.cc +++ b/src/tests/stub_CacheDigest.cc @@ -16,7 +16,8 @@ class CacheDigest; class CacheDigestGuessStats; class StoreEntry; -CacheDigest * cacheDigestCreate(int, int) STUB_RETVAL(NULL) +#include "CacheDigest.h" +CacheDigest::CacheDigest(int, int) {STUB} void cacheDigestDestroy(CacheDigest *) STUB CacheDigest * cacheDigestClone(const CacheDigest *) STUB_RETVAL(NULL) void cacheDigestClear(CacheDigest * ) STUB