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