From e585187b248f48b3c6e9247b49fa07c6565d65e5 Mon Sep 17 00:00:00 2001 From: maximius Date: Sat, 17 Oct 2009 15:51:44 -0700 Subject: *Backed out changeset 3be01fb200a5 --HG-- branch : trunk --- src/shared/Config/dotconfpp/mempool.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/shared/Config/dotconfpp/mempool.cpp') diff --git a/src/shared/Config/dotconfpp/mempool.cpp b/src/shared/Config/dotconfpp/mempool.cpp index 019cfe3cb86..cec8e8d119f 100644 --- a/src/shared/Config/dotconfpp/mempool.cpp +++ b/src/shared/Config/dotconfpp/mempool.cpp @@ -1,20 +1,25 @@ + #include "mempool.h" + AsyncDNSMemPool::PoolChunk::PoolChunk(size_t _size): pool(NULL), pos(0), size(_size) { pool = ::malloc(size); } + AsyncDNSMemPool::PoolChunk::~PoolChunk() { ::free(pool); } + AsyncDNSMemPool::AsyncDNSMemPool(size_t _defaultSize): chunks(NULL), chunksCount(0), defaultSize(_defaultSize), poolUsage(0), poolUsageCounter(0) { } + AsyncDNSMemPool::~AsyncDNSMemPool() { for(size_t i = 0; ipos = size; return chunks[chunksCount-1]->pool; } + void AsyncDNSMemPool::free() { size_t pu = 0; size_t psz = 0; ++poolUsageCounter; + for(size_t i = 0; ipos; psz += chunks[i]->size; chunks[i]->pos = 0; } poolUsage=(poolUsage>pu)?poolUsage:pu; + if(poolUsageCounter >= 10 && chunksCount > 1){ psz -= chunks[chunksCount-1]->size; if(poolUsage < psz){ @@ -75,10 +88,12 @@ void AsyncDNSMemPool::free() poolUsageCounter = 0; } } + void * AsyncDNSMemPool::calloc(size_t size) { return ::memset(this->alloc(size), 0, size); } + char * AsyncDNSMemPool::strdup(const char *str) { return ::strcpy((char*)this->alloc(strlen(str)+1), str); -- cgit v1.2.3