Commit b9afd797 authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[2209] Writer for the test segment

parent dba0f070
......@@ -17,6 +17,7 @@
#include <datasrc/memory/zone_table_segment.h>
#include <datasrc/memory/zone_table.h>
#include <datasrc/memory/zone_data.h>
#include <datasrc/memory/zone_writer_local.h>
namespace isc {
......@@ -52,15 +53,55 @@ public:
return (mem_sgmt_);
}
virtual ZoneWriter* getZoneWriter(const LoadAction&, const dns::Name&,
const dns::RRClass&)
virtual ZoneWriter* getZoneWriter(const LoadAction& load_action,
const dns::Name& name,
const dns::RRClass& rrclass)
{
isc_throw(isc::NotImplemented, "Not implemented");
return (new Writer(this, load_action, name, rrclass));
}
private:
isc::util::MemorySegment& mem_sgmt_;
ZoneTableHeader header_;
// A writer for this segment. The implementation is similar
// to ZoneWriterLocal, but all the error handling is stripped
// for simplicity. Also, we do everything inside the
// install(), for the same reason. We just need something
// inside the tests, not a full-blown implementation
// for background loading.
class Writer : public ZoneWriter {
public:
Writer(ZoneTableSegmentTest* segment, const LoadAction& load_action,
const dns::Name& name, const dns::RRClass& rrclass) :
segment_(segment),
load_action_(load_action),
name_(name),
rrclass_(rrclass)
{}
void load() {}
void install() {
ZoneTable* table(segment_->getHeader().getTable());
const ZoneTable::AddResult
result(table->addZone(segment_->getMemorySegment(), rrclass_,
name_,
load_action_(segment_->
getMemorySegment())));
if (result.zone_data != NULL) {
ZoneData::destroy(segment_->getMemorySegment(),
result.zone_data, rrclass_);
}
}
virtual void cleanup() {}
private:
ZoneTableSegmentTest* segment_;
LoadAction load_action_;
dns::Name name_;
dns::RRClass rrclass_;
};
};
} // namespace test
......
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