% CACHE_LOCALZONE_UNKNOWN entry with key %1 not found in local zone data
% CACHE_LOCALZONE_FOUND found entry with key %1 in local zone data
+
+% CACHE_MESSAGES_INIT initialized message cache for %1 %2 messages
+
+% CACHE_MESSAGES_DEINIT deinitialized message cache
+
+% CACHE_MESSAGES_FOUND found a message entry for %1 in the message cache
+
+% CACHE_MESSAGES_EXPIRED found an expired message entry for %1 in the message cache
+
+% CACHE_MESSAGES_UNKNOWN no entry for %1 found in the message cache
+
+% CACHE_MESSAGES_UNCACHEABLE not inserting uncacheable message %1/%2/%3
+
+% CACHE_MESSAGES_UPDATE updating message entry %1/%2/%3
+
+% CACHE_MESSAGES_REMOVE removing old instance of %1/%2/%3 first
// Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
+//
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
#include "message_cache.h"
#include "message_utility.h"
#include "cache_entry_key.h"
+#include "logger.h"
namespace isc {
namespace cache {
message_lru_((3 * cache_size),
new HashDeleter<MessageEntry>(message_table_))
{
+ LOG_DEBUG(logger, DBG_TRACE_BASIC, CACHE_MESSAGES_INIT).arg(cache_size).
+ arg(RRClass(message_class));
}
MessageCache::~MessageCache() {
// Destroy all the message entries in the cache.
message_lru_.clear();
+ LOG_DEBUG(logger, DBG_TRACE_BASIC, CACHE_MESSAGES_DEINIT);
}
bool
if(msg_entry) {
// Check whether the message entry has expired.
if (msg_entry->getExpireTime() > time(NULL)) {
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_FOUND).
+ arg(entry_name);
message_lru_.touch(msg_entry);
return (msg_entry->genMessage(time(NULL), response));
} else {
// message entry expires, remove it from hash table and lru list.
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_EXPIRED).
+ arg(entry_name);
message_table_.remove(entry_key);
message_lru_.remove(msg_entry);
return (false);
}
}
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_UNKNOWN).arg(entry_name);
return (false);
}
bool
MessageCache::update(const Message& msg) {
if (!canMessageBeCached(msg)){
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_UNCACHEABLE).
+ arg((*msg.beginQuestion())->getName()).
+ arg((*msg.beginQuestion())->getType()).
+ arg((*msg.beginQuestion())->getClass());
return (false);
}
QuestionIterator iter = msg.beginQuestion();
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_UPDATE).
+ arg((*iter)->getName()).arg((*iter)->getType()).
+ arg((*iter)->getClass());
std::string entry_name = genCacheEntryName((*iter)->getName(),
(*iter)->getType());
HashKey entry_key = HashKey(entry_name, RRClass(message_class_));
// add the message entry, maybe there is one way to touch it once.
MessageEntryPtr old_msg_entry = message_table_.get(entry_key);
if (old_msg_entry) {
+ LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_MESSAGES_REMOVE).
+ arg((*iter)->getName()).arg((*iter)->getType()).
+ arg((*iter)->getClass());
message_lru_.remove(old_msg_entry);
}