serialization / deserialization fixed
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
index 0bd0e46..992fae5 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
@@ -150,6 +150,25 @@
nonceVisitor
)));
break;
+
+
+ case NDN_DTAG_Nack:
+ if (n.m_nestedTags.size()!=1) // should be exactly one UDATA inside this tag
+ throw CcnbDecodingException ();
+
+ interest.SetNack (
+ 1 == boost::any_cast<uint32_t> (
+ (*n.m_nestedTags.begin())->accept(nonNegativeIntegerVisitor)));
+ break;
+
+ case NDN_DTAG_Congested:
+ if (n.m_nestedTags.size()!=1) // should be exactly one UDATA inside this tag
+ throw CcnbDecodingException ();
+
+ interest.SetCongested (
+ 1 == boost::any_cast<uint32_t> (
+ (*n.m_nestedTags.begin())->accept(nonNegativeIntegerVisitor)));
+ break;
}
}
diff --git a/helper/ccnx-encoding-helper.cc b/helper/ccnx-encoding-helper.cc
index 49b0200..20ea101 100644
--- a/helper/ccnx-encoding-helper.cc
+++ b/helper/ccnx-encoding-helper.cc
@@ -88,6 +88,19 @@
reinterpret_cast<const uint8_t*>(&nonce),
sizeof(nonce));
}
+
+ if (interest.IsNack ())
+ {
+ written += AppendBlockHeader (start, CcnbParser::NDN_DTAG_Nack, CcnbParser::CCN_DTAG);
+ written += AppendNumber (start, 1);
+ written += AppendCloser (start);
+ }
+ if (interest.IsCongested ())
+ {
+ written += AppendBlockHeader (start, CcnbParser::NDN_DTAG_Congested, CcnbParser::CCN_DTAG);
+ written += AppendNumber (start, 1);
+ written += AppendCloser (start);
+ }
written += AppendCloser (start); // </Interest>
return written;