AuthPacketCache::~AuthPacketCache()
{
try {
- vector<WriteLock*> locks;
+ vector<WriteLock> locks;
for(auto& mc : d_maps) {
- locks.push_back(new WriteLock(&mc.d_mut));
- }
- for(auto wl : locks) {
- delete wl;
+ locks.push_back(WriteLock(mc.d_mut));
}
+ locks.clear();
}
catch(...) {
}
}
+void AuthPacketCache::MapCombo::reserve(size_t numberOfEntries)
+{
+#if BOOST_VERSION >= 105600
+ WriteLock wl(&d_mut);
+ d_map.get<HashTag>().reserve(numberOfEntries);
+#endif /* BOOST_VERSION >= 105600 */
+}
+
bool AuthPacketCache::get(DNSPacket& p, DNSPacket& cached)
{
if(!d_ttl) {
}
/* no existing entry found to refresh */
- mc.d_map.insert(entry);
+ mc.d_map.insert(std::move(entry));
if (*d_statnumentries >= d_maxEntries) {
/* remove the least recently inserted or replaced entry */
sidx.pop_front();
}
else {
- (*d_statnumentries)++;
+ ++(*d_statnumentries);
}
}
}
void AuthPacketCache::cleanup()
{
- uint64_t maxCached = d_maxEntries;
- uint64_t cacheSize = *d_statnumentries;
- uint64_t totErased = 0;
-
- totErased = pruneLockedCollectionsVector<SequencedTag>(d_maps, maxCached, cacheSize);
+ uint64_t totErased = pruneLockedCollectionsVector<SequencedTag>(d_maps);
*d_statnumentries -= totErased;
DLOG(g_log<<"Done with cache clean, cacheSize: "<<(*d_statnumentries)<<", totErased"<<totErased<<endl);