/// In-memory data source. Currently class IN only for simplicity.
const RRClass memory_client_class_;
AuthSrv::InMemoryClientPtr memory_client_;
+ isc::datasrc::DataSourceClientContainerPtr memory_client_container_;
isc::datasrc::InMemoryClient* memory_client_p_;
/// Hot spot cache
"Memory data source is not supported for RR class "
<< rrclass);
}
- if (!impl_->memory_client_) {
+ if (!impl_->memory_client_p_) {
isc_throw(Exception, "no memory client set");
}
return (impl_->memory_client_p_);
impl_->memory_client_p_ = memory_client.get();
}
+void
+AuthSrv::setInMemoryClient(const isc::dns::RRClass& rrclass,
+ isc::datasrc::DataSourceClientContainerPtr memory_client)
+{
+ // XXX: see above
+ if (rrclass != impl_->memory_client_class_) {
+ isc_throw(InvalidParameter,
+ "Memory data source is not supported for RR class "
+ << rrclass);
+ } else if (!impl_->memory_client_ && memory_client) {
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_MEM_DATASRC_ENABLED)
+ .arg(rrclass);
+ } else if (impl_->memory_client_ && !memory_client) {
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_MEM_DATASRC_DISABLED)
+ .arg(rrclass);
+ }
+ impl_->memory_client_container_ = memory_client;
+ impl_->memory_client_p_ =
+ static_cast<isc::datasrc::InMemoryClient*>(&memory_client->getInstance());
+}
+
+
uint32_t
AuthSrv::getStatisticsTimerInterval() const {
return (impl_->statistics_timer_.getInterval() / 1000);
#include <cc/data.h>
#include <config/ccsession.h>
+#include <datasrc/factory.h>
#include <dns/message.h>
#include <dns/opcode.h>
#include <util/buffer.h>
/// \param memory_datasrc A (shared) pointer to \c InMemoryClient to be set.
void setInMemoryClient(const isc::dns::RRClass& rrclass,
InMemoryClientPtr memory_client);
+ void setInMemoryClient(const isc::dns::RRClass& rrclass,
+ isc::datasrc::DataSourceClientContainerPtr memory_client);
/// \brief Set the communication session with Statistics.
///