Browse Source

[2097] introduced some getter methods

JINMEI Tatuya 12 years ago
parent
commit
6ddaa4996d

+ 2 - 3
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<const uint8_t*>(rdataset + 1),
+                    reinterpret_cast<const uint8_t*>(rdataset->getDataBuf()),
                     rdataset->rdata_count,
                     rdataset->sig_rdata_count).getSize();
     rdataset->~RdataSet();

+ 8 - 1
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,

+ 5 - 5
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);
 }
 }