BIND 10 #2107: redefine in-memory zone data
BIND 10 Development
do-not-reply at isc.org
Fri Aug 17 01:33:50 UTC 2012
#2107: redefine in-memory zone data
-------------------------------------+-------------------------------------
Reporter: | Owner:
jinmei | Status: new
Type: task | Milestone:
Priority: | Sprint-20120821
medium | Resolution:
Component: data | Sensitive: 0
source | Sub-Project: DNS
Keywords: | Estimated Difficulty: 4
Defect Severity: N/A | Total Hours: 0
Feature Depending on Ticket: |
scalable inmemory |
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
Description changed by jinmei:
Old description:
> We'll need a memory encoded form of zone data. My suggestion
> is to revise the current `ZoneData` structure so that it will be
> simpler data-only structure, and allocated/deallocated using
> static method and a memory segment, e.g.:
>
> {{{#!cpp
> template <typename TreeType, typename TreeNodeType>
> struct ZoneData {
> static ZoneData* allocate(MemorySegment& segment, RRClass
> zone_class,;
> const Name& zone_name);
> static void deallocate(MemorySegment& segment);
>
> // These will be initialized on allocation and won't change
> const RRClass zone_class;
> // some other attributes
> offset_ptr<TreeType> const tree;
> offset_ptr<TreeNodeType> const origin_node;
>
> const RBTree& getNSEC3Tree() const; // for ZoneFinder
> RBTree& getNSEC3Tree(); // for ZoneUpdater/loader
> private:
> offset_ptr<TreeType> nsec3_tree_; // build this on-demand
> };
> }}}
>
> This is essentially a private structure for other implementation
> details of in-memory data source client (finder/updater, etc), which
> will use the member variables directly.
New description:
We'll need a memory encoded form of zone data. My suggestion
is to revise the current `ZoneData` structure so that it will be
simpler data-only structure, and allocated/deallocated using
static method and a memory segment, e.g.:
{{{#!cpp
template <typename TreeType, typename TreeNodeType>
struct ZoneData {
static ZoneData* create(MemorySegment& segment, RRClass zone_class,;
const Name& zone_name);
static void destroy(MemorySegment& segment, ZoneData* zone_data);
// These will be initialized on allocation and won't change
const RRClass zone_class;
// some other attributes
offset_ptr<TreeType> const tree;
offset_ptr<TreeNodeType> const origin_node;
const RBTree& getNSEC3Tree() const; // for ZoneFinder
RBTree& getNSEC3Tree(); // for ZoneUpdater/loader
private:
offset_ptr<TreeType> nsec3_tree_; // build this on-demand
};
}}}
This is essentially a private structure for other implementation
details of in-memory data source client (finder/updater, etc), which
will use the member variables directly.
--
--
Ticket URL: <http://bind10.isc.org/ticket/2107#comment:4>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list