22 m_instance = std::make_shared<CurlHeaderCache>();
30 std::unique_lock<std::mutex> lock(m_mutex);
32 if(m_maxCacheEntries<=0)
return result;
33 CacheType::const_iterator iter = m_cache.find(key);
35 if(iter != m_cache.end())
37 filesize = iter->second->m_filesize;
51 std::unique_lock<std::mutex> lock(m_mutex);
52 if(m_maxCacheEntries<=0)
return;
53 CacheType::const_iterator iter = m_cache.find(key);
54 if(iter != m_cache.end())
56 iter->second->m_filesize = node->m_filesize;
57 touchEntryProtected(key);
61 if(m_cache.size() >= m_maxCacheEntries)
66 m_cache.insert( std::make_pair(key, node) );
67 m_cacheTime.insert( std::make_pair(node->m_timestamp, key) );
77 std::unique_lock<std::mutex> lock(m_mutex);
78 touchEntryProtected(key);
83 CacheType::iterator iter = m_cache.find(key);
84 if(iter!=m_cache.end())
86 CacheTimeIndexType::iterator cacheTimeIter = m_cacheTime.find(iter->second->m_timestamp);
87 if(cacheTimeIter!=m_cacheTime.end())
89 m_cacheTime.erase(cacheTimeIter);
91 m_cacheTime.insert( std::make_pair(iter->second->m_timestamp, key) );
100 if(m_cacheTime.empty())
return;
101 if(targetSize >= m_cache.size())
108 CacheTimeIndexType::iterator iter = m_cacheTime.begin();
110 while(targetSize > 0)
112 m_cache.erase(iter->second);
113 iter = m_cacheTime.erase(iter);
This code was derived from https://gist.github.com/mshockwave.
static ossimTimer * instance()
Timer_t tick() const
Get the timers tick value.