From: JINMEI Tatuya Date: Mon, 13 Aug 2012 23:01:49 +0000 (-0700) Subject: [2097] introduced some getter methods X-Git-Tag: trac2351_base~113^2~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6ddaa4996de0032c41b2e32fbe351ccb3b0f20b6;p=thirdparty%2Fkea.git [2097] introduced some getter methods --- diff --git a/src/lib/datasrc/memory/rdataset.cc b/src/lib/datasrc/memory/rdataset.cc index fbac4ab13e..4e3ffb240d 100644 --- a/src/lib/datasrc/memory/rdataset.cc +++ b/src/lib/datasrc/memory/rdataset.cc @@ -44,14 +44,13 @@ RdataSet::create(util::MemorySegment& mem_sgmt, RdataEncoder& encoder, } const size_t data_len = encoder.getStorageLength(); - assert(data_len == 4); void* p = mem_sgmt.allocate(sizeof(RdataSet) + data_len); RdataSet* rdataset = new(p) RdataSet(rrset->getType(), rrset->getRdataCount(), sig_rrset ? sig_rrset->getRdataCount() : 0, rrset->getTTL()); - encoder.encode(rdataset + 1, data_len); + encoder.encode(rdataset->getDataBuf(), data_len); return (rdataset); } @@ -61,7 +60,7 @@ RdataSet::destroy(util::MemorySegment& mem_sgmt, RRClass rrclass, { const size_t data_len = RdataReader(rrclass, rdataset->type, - reinterpret_cast(rdataset + 1), + reinterpret_cast(rdataset->getDataBuf()), rdataset->rdata_count, rdataset->sig_rdata_count).getSize(); rdataset->~RdataSet(); diff --git a/src/lib/datasrc/memory/rdataset.h b/src/lib/datasrc/memory/rdataset.h index e748aeed84..946294ba6a 100644 --- a/src/lib/datasrc/memory/rdataset.h +++ b/src/lib/datasrc/memory/rdataset.h @@ -29,7 +29,8 @@ namespace datasrc { namespace memory { class RdataEncoder; -struct RdataSet { +class RdataSet { +public: static RdataSet* create(util::MemorySegment& mem_sgmt, RdataEncoder& encoder, dns::ConstRRsetPtr rrset, @@ -38,9 +39,15 @@ struct RdataSet { RdataSet* rdataset); const dns::RRType type; +private: const uint16_t sig_rdata_count : 3; const uint16_t rdata_count : 13; const uint32_t ttl; ///< TTL of the RdataSet, net byte order +public: + size_t getRdataCount() const { return (rdata_count); } + size_t getSigRdataCount() const { return (sig_rdata_count); } + const void* getTTLData() const { return (&ttl); } + void* getDataBuf() { return (this + 1); } private: RdataSet(dns::RRType type, size_t rdata_count, size_t sig_rdata_count, diff --git a/src/lib/datasrc/memory/tests/rdataset_unittest.cc b/src/lib/datasrc/memory/tests/rdataset_unittest.cc index d740027faa..c91476536b 100644 --- a/src/lib/datasrc/memory/tests/rdataset_unittest.cc +++ b/src/lib/datasrc/memory/tests/rdataset_unittest.cc @@ -52,8 +52,8 @@ protected: // Convert the given 32-bit integer (network byte order) to the corresponding // RRTTL object. RRTTL -restoreTTL(uint32_t net_ttl) { - isc::util::InputBuffer b(&net_ttl, sizeof(net_ttl)); +restoreTTL(const void* ttl_data) { + isc::util::InputBuffer b(ttl_data, sizeof(uint32_t)); return (RRTTL(b)); } @@ -64,9 +64,9 @@ TEST_F(RdataSetTest, create) { RdataSet* rdataset = RdataSet::create(mem_sgmt_, encoder_, a_rrset_, ConstRRsetPtr()); EXPECT_EQ(RRType::A(), rdataset->type); - EXPECT_EQ(RRTTL(1076895760), restoreTTL(rdataset->ttl)); - EXPECT_EQ(1, rdataset->rdata_count); - EXPECT_EQ(0, rdataset->sig_rdata_count); + EXPECT_EQ(RRTTL(1076895760), restoreTTL(rdataset->getTTLData())); + EXPECT_EQ(1, rdataset->getRdataCount()); + EXPECT_EQ(0, rdataset->getSigRdataCount()); RdataSet::destroy(mem_sgmt_, RRClass::IN(), rdataset); } }