wait to be verified
diff --git a/src/rr.hpp b/src/rr.hpp
index 95001e9..106bb39 100644
--- a/src/rr.hpp
+++ b/src/rr.hpp
@@ -25,24 +25,64 @@
 #include <ndn-cxx/encoding/block.hpp>
 #include <ndn-cxx/interest.hpp>
 
+#include <ndn-cxx/encoding/encoding-buffer.hpp>
+
 namespace ndn {
 namespace ndns {
 
-enum RRType
-  {
-    NS,
-    TXT,
-    UNKNOWN
-  };
 
 class RR {
 public:
+
+  enum RRType
+    {
+      NS,
+      TXT,
+      UNKNOWN
+    };
+  static std::string
+  toString(const RRType& type)
+    {
+      std::string str;
+
+        switch (type)
+        {
+            case NS:
+                str = "NS";
+                break;
+            case TXT:
+                str = "TXT";
+                break;
+            default:
+                str = "UNKNOWN";
+                break;
+        }
+        return str;
+    }
+
+  static RRType
+  toRRType(const std::string& str)
+  {
+      RRType atype;
+      if (str == "NS"){
+          atype = NS;
+      }
+      else if (str == "TXT") {
+          atype = TXT;
+      }
+      else {
+          atype = UNKNOWN;
+      }
+      return atype;
+  }
+
   RR();
   virtual ~RR();
 
   const std::string&
   getRrdata() const
   {
+
     return m_rrData;
   }
 
@@ -51,32 +91,86 @@
     this->m_rrData = rrdata;
   }
 
-private:
-  template<bool T>
-  size_t
-  wireEncode(EncodingImpl<T> & block) const;
+
 
 public:
 
+	uint32_t getId() const {
+		return m_id;
+	}
+
+	void setId(uint32_t id) {
+		m_id = id;
+	}
+
+  const Block& getWire() const {
+      return m_wire;
+  }
+
+  void setWire(const Block& wire) {
+      m_wire = wire;
+  }
+
+
+  inline bool operator==(const RR& rr) const
+  {
+    if (this->getRrdata() == rr.getRrdata())
+      return true;
+
+    return false;
+  }
+
+
+  template<bool T>
+  inline size_t
+  wireEncode(EncodingImpl<T> & block) const
+  {
+    size_t totalLength = 0;
+    const std::string& msg = this->getRrdata();
+    totalLength += prependByteArrayBlock(block,
+                           ndn::ndns::tlv::RRDataSub2,
+                           reinterpret_cast<const uint8_t*>(msg.c_str()),
+                           msg.size()
+                           );
+
+    totalLength += prependNonNegativeIntegerBlock(block,
+                        ndn::ndns::tlv::RRDataSub1,
+                        this->getId());
+
+    totalLength += block.prependVarNumber(totalLength);
+    totalLength += block.prependVarNumber(ndn::ndns::tlv::RRData);
+    //std::cout<<"call rr.h wireEncode"<<std::endl;
+    return totalLength;
+  }
+
+
   const Block&
   wireEncode() const;
 
   void
   wireDecode(const Block& wire);
 
-
-  Interest
-  toWire() const;
-
+  //inline std::ostream& operator<<(std::ostream& os, const RR& rr);
 
 private:
   uint32_t m_id;
+  //unsigned long m_id;
   std::string m_rrData;
 
   mutable Block m_wire;
-};
+};//class RR
+
+
+inline std::ostream&
+operator<<(std::ostream& os, const RR& rr)
+{
+  os<<"RR: Id="<<rr.getId()<<" Data="<<rr.getRrdata();
+  return os;
+}
 
 } // namespace ndns
 } // namespace ndn
 
+
+
 #endif // NDNS_RR_HPP