BIND 10 trac2751, updated. 04eb5cebe1ab646507b4dab3964a87e730a79646 [2751] Consolidate common code
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Sep 16 08:45:07 UTC 2013
The branch, trac2751 has been updated
via 04eb5cebe1ab646507b4dab3964a87e730a79646 (commit)
from 8e64776206cf6845c938ddfb1ad76c7d6a61377e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 04eb5cebe1ab646507b4dab3964a87e730a79646
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Mon Sep 16 10:42:50 2013 +0200
[2751] Consolidate common code
-----------------------------------------------------------------------
Summary of changes:
src/lib/datasrc/memory/rdataset.cc | 49 +++++++++++++++++-------------------
src/lib/datasrc/memory/rdataset.h | 6 +++++
2 files changed, 29 insertions(+), 26 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/rdataset.cc b/src/lib/datasrc/memory/rdataset.cc
index 5314077..7341e5c 100644
--- a/src/lib/datasrc/memory/rdataset.cc
+++ b/src/lib/datasrc/memory/rdataset.cc
@@ -115,6 +115,25 @@ sanityChecks(const ConstRRsetPtr& rrset, const ConstRRsetPtr &sig_rrset,
} // Anonymous namespace
RdataSet*
+RdataSet::packSet(util::MemorySegment& mem_sgmt, RdataEncoder& encoder,
+ size_t rdata_count, size_t rrsig_count, const RRType& rrtype,
+ const RRTTL& rrttl)
+{
+ const size_t ext_rrsig_count_len =
+ rrsig_count >= MANY_RRSIG_COUNT ? sizeof(uint16_t) : 0;
+ const size_t data_len = encoder.getStorageLength();
+ void* p = mem_sgmt.allocate(sizeof(RdataSet) + ext_rrsig_count_len +
+ data_len);
+ RdataSet* rdataset = new(p) RdataSet(rrtype, rdata_count, rrsig_count,
+ rrttl);
+ if (rrsig_count >= RdataSet::MANY_RRSIG_COUNT) {
+ *rdataset->getExtSIGCountBuf() = rrsig_count;
+ }
+ encoder.encode(rdataset->getDataBuf(), data_len);
+ return (rdataset);
+}
+
+RdataSet*
RdataSet::create(util::MemorySegment& mem_sgmt, RdataEncoder& encoder,
ConstRRsetPtr rrset, ConstRRsetPtr sig_rrset,
const RdataSet* old_rdataset)
@@ -171,18 +190,8 @@ RdataSet::create(util::MemorySegment& mem_sgmt, RdataEncoder& encoder,
<< MAX_RRSIG_COUNT);
}
- const size_t ext_rrsig_count_len =
- rrsig_count >= MANY_RRSIG_COUNT ? sizeof(uint16_t) : 0;
- const size_t data_len = encoder.getStorageLength();
- void* p = mem_sgmt.allocate(sizeof(RdataSet) + ext_rrsig_count_len +
- data_len);
- RdataSet* rdataset = new(p) RdataSet(rrtype, rdata_count, rrsig_count,
- rrttl);
- if (rrsig_count >= MANY_RRSIG_COUNT) {
- *rdataset->getExtSIGCountBuf() = rrsig_count;
- }
- encoder.encode(rdataset->getDataBuf(), data_len);
- return (rdataset);
+ return (packSet(mem_sgmt, encoder, rdata_count, rrsig_count, rrtype,
+ rrttl));
}
namespace {
@@ -272,20 +281,8 @@ RdataSet::subtract(util::MemorySegment& mem_sgmt, RdataEncoder& encoder,
if (rdata_count == 0 && rrsig_count == 0) {
return (NULL); // It is left empty
}
- // Construct the result
- const size_t ext_rrsig_count_len =
- rrsig_count >= MANY_RRSIG_COUNT ? sizeof(uint16_t) : 0;
- const size_t data_len = encoder.getStorageLength();
- void* p = mem_sgmt.allocate(sizeof(RdataSet) + ext_rrsig_count_len +
- data_len);
- RdataSet* rdataset =
- new(p) RdataSet(rrtype, rdata_count, rrsig_count,
- restoreTTL(old_rdataset.getTTLData()));
- if (rrsig_count >= MANY_RRSIG_COUNT) {
- *rdataset->getExtSIGCountBuf() = rrsig_count;
- }
- encoder.encode(rdataset->getDataBuf(), data_len);
- return (rdataset);
+ return (packSet(mem_sgmt, encoder, rdata_count, rrsig_count, rrtype,
+ restoreTTL(old_rdataset.getTTLData())));
}
void
diff --git a/src/lib/datasrc/memory/rdataset.h b/src/lib/datasrc/memory/rdataset.h
index b347a33..bd93781 100644
--- a/src/lib/datasrc/memory/rdataset.h
+++ b/src/lib/datasrc/memory/rdataset.h
@@ -358,6 +358,12 @@ private:
// field for the real number of RRSIGs. It's 2^3 - 1 = 7.
static const size_t MANY_RRSIG_COUNT = (1 << 3) - 1;
+ // Common code for packing the result in create and subtract.
+ static RdataSet* packSet(util::MemorySegment& mem_sgmt,
+ RdataEncoder& encoder, size_t rdata_count,
+ size_t rrsig_count, const dns::RRType& rrtype,
+ const dns::RRTTL& rrttl);
+
public:
/// \brief Return the bare pointer to the next node.
///
More information about the bind10-changes
mailing list