Commit e8137e18 authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

[2833] pass CacheConfig to DataSourceClient and maintain it there.

also simplified the constructor interface; we actually don't need the
other one.
parent 347f8128
......@@ -76,7 +76,6 @@ using namespace isc::asiolink;
using namespace isc::testutils;
using namespace isc::server_common::portconfig;
using namespace isc::auth::unittest;
using isc::datasrc::memory::ZoneTableSegment;
using isc::UnitTestUtil;
using boost::scoped_ptr;
using isc::auth::statistics::Counters;
......@@ -1757,12 +1756,13 @@ public:
data_sources_.push_back(
DataSourceInfo(client.get(),
isc::datasrc::DataSourceClientContainerPtr(),
false, RRClass::IN(), ztable_segment_, ""));
boost::shared_ptr<
isc::datasrc::internal::CacheConfig>(),
RRClass::IN(), ""));
}
}
private:
const boost::shared_ptr<isc::datasrc::ConfigurableClientList> real_;
boost::shared_ptr<ZoneTableSegment> ztable_segment_; // can be null
vector<isc::datasrc::DataSourceClientPtr> clients_;
};
......
......@@ -48,28 +48,18 @@ namespace datasrc {
ConfigurableClientList::DataSourceInfo::DataSourceInfo(
DataSourceClient* data_src_client,
const DataSourceClientContainerPtr& container, bool has_cache,
const RRClass& rrclass, const shared_ptr<ZoneTableSegment>& segment,
const string& name) :
const DataSourceClientContainerPtr& container,
boost::shared_ptr<internal::CacheConfig> cache_conf,
const RRClass& rrclass, const string& name) :
data_src_client_(data_src_client),
container_(container),
name_(name)
name_(name),
cache_conf_(cache_conf)
{
if (has_cache) {
cache_.reset(new InMemoryClient(segment, rrclass));
ztable_segment_ = segment;
}
}
ConfigurableClientList::DataSourceInfo::DataSourceInfo(
const RRClass& rrclass, const shared_ptr<ZoneTableSegment>& segment,
bool has_cache, const string& name) :
data_src_client_(NULL),
name_(name)
{
if (has_cache) {
cache_.reset(new InMemoryClient(segment, rrclass));
ztable_segment_ = segment;
if (cache_conf_ && cache_conf_->isEnabled()) {
ztable_segment_.reset(ZoneTableSegment::create(
rrclass, cache_conf_->getSegmentType()));
cache_.reset(new InMemoryClient(ztable_segment_, rrclass));
}
}
......@@ -129,21 +119,15 @@ ConfigurableClientList::configure(const ConstElementPtr& config,
continue;
}
internal::CacheConfig cache_conf(type, dsrc_pair.first, *dconf,
allow_cache);
shared_ptr<ZoneTableSegment> ztable_segment;
if (cache_conf.isEnabled()) {
ztable_segment.reset(ZoneTableSegment::create(
rrclass_,
cache_conf.getSegmentType()));
}
boost::shared_ptr<internal::CacheConfig> cache_conf(
new internal::CacheConfig(type, dsrc_pair.first, *dconf,
allow_cache));
new_data_sources.push_back(DataSourceInfo(dsrc_pair.first,
dsrc_pair.second,
cache_conf.isEnabled(),
rrclass_, ztable_segment,
cache_conf, rrclass_,
name));
if (cache_conf.isEnabled()) {
if (cache_conf->isEnabled()) {
// List the zones we are loading
vector<string> zones_origins;
if (type == "MasterFiles") {
......
......@@ -46,6 +46,10 @@ class InMemoryClient;
class ZoneWriter;
}
namespace internal {
class CacheConfig;
}
/// \brief Segment status of the cache
///
/// Describes the status in which the memory segment for the in-memory cache of
......@@ -397,19 +401,11 @@ public:
///
/// \todo The content yet to be defined.
struct DataSourceInfo {
// Plays a role of default constructor too (for vector)
DataSourceInfo(const dns::RRClass& rrclass,
const boost::shared_ptr
<isc::datasrc::memory::ZoneTableSegment>&
ztable_segment,
bool has_cache = false,
const std::string& name = std::string());
DataSourceInfo(DataSourceClient* data_src_client,
const DataSourceClientContainerPtr& container,
bool has_cache, const dns::RRClass& rrclass,
const boost::shared_ptr
<isc::datasrc::memory::ZoneTableSegment>&
ztable_segment, const std::string& name);
boost::shared_ptr<internal::CacheConfig> cache_conf,
const dns::RRClass& rrclass,
const std::string& name);
DataSourceClient* data_src_client_;
DataSourceClientContainerPtr container_;
......@@ -422,6 +418,10 @@ public:
boost::shared_ptr<memory::InMemoryClient> cache_;
boost::shared_ptr<memory::ZoneTableSegment> ztable_segment_;
std::string name_;
private:
// this is kept private for now. When it needs to be accessed,
// we'll add a read-only getter method.
boost::shared_ptr<internal::CacheConfig> cache_conf_;
};
/// \brief The collection of data sources.
......
......@@ -127,7 +127,8 @@ public:
ds_.push_back(ds);
ds_info_.push_back(ConfigurableClientList::DataSourceInfo(
ds.get(), DataSourceClientContainerPtr(),
false, rrclass_, ztable_segment_, ""));
boost::shared_ptr<internal::CacheConfig>(),
rrclass_, ""));
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment