ContentObject and Interest serialization and deserialization seem to
work normal now. Debug examples added to examples/ folder (they
probably should become a part of test suite).
diff --git a/examples/content-object-example.cc b/examples/content-object-example.cc
new file mode 100644
index 0000000..fa9700e
--- /dev/null
+++ b/examples/content-object-example.cc
@@ -0,0 +1,56 @@
+#include "ns3/test.h"
+#include "ns3/annotated-topology-reader.h"
+#include "ns3/ccnx-content-object-header.h"
+#include "ns3/uinteger.h"
+#include "ns3/random-variable.h"
+#include <limits>
+#include "ns3/ccnx-header-helper.h"
+#include "ns3/header.h"
+#include "ns3/ccnx-name-components.h"
+#include "ns3/nstime.h"
+#include "ns3/buffer.h"
+#include "ns3/log.h"
+
+using namespace ns3;
+#include <fstream>
+
+NS_LOG_COMPONENT_DEFINE ("ContentObjectHeaderExample");
+
+int
+main (int argc, char *argv[])
+{
+ LogComponentEnable ("ContentObjectHeaderExample", LOG_ALL);
+ LogComponentEnable ("Packet", LOG_ALL);
+
+ NS_LOG_INFO ("Test started");
+
+ Packet::EnablePrinting ();
+ Packet::EnableChecking ();
+ Packet packet (10);
+
+ CcnxContentObjectHeader header;
+ CcnxContentObjectTail trailer;
+
+ Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
+ (*testname) ("1");
+ header.SetName(testname);
+
+ NS_LOG_INFO ("Source: \n" << header << trailer);
+
+ packet.AddHeader (header);
+ packet.AddTrailer (trailer);
+
+ // NS_LOG_INFO ("Deserialized packet: \n" << packet);
+
+ NS_LOG_INFO ("Removing and deserializing individual headers");
+
+ CcnxContentObjectHeader dst_header;
+ CcnxContentObjectTail dst_trailer;
+
+ packet.RemoveHeader (dst_header);
+ packet.RemoveTrailer (dst_trailer);
+
+ NS_LOG_INFO ("Target: \n" << dst_header << dst_trailer);
+
+ return 0;
+}
diff --git a/examples/interest-header-example.cc b/examples/interest-header-example.cc
index 83895ad..2b595b1 100644
--- a/examples/interest-header-example.cc
+++ b/examples/interest-header-example.cc
@@ -20,9 +20,14 @@
main (int argc, char *argv[])
{
LogComponentEnable ("InterestHeaderExample", LOG_ALL);
+ LogComponentEnable ("Packet", LOG_ALL);
NS_LOG_INFO ("Test started");
+ Packet::EnablePrinting ();
+ Packet::EnableChecking ();
+ Packet packet (0);
+
CcnxInterestHeader interestHeader;
Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
@@ -48,32 +53,17 @@
UniformVariable random(1, std::numeric_limits<uint32_t>::max ());
uint32_t randomNonce = static_cast<uint32_t> (random.GetValue());
interestHeader.SetNonce(randomNonce);
- NS_LOG_INFO ("Source: \n" <<interestHeader);
+ NS_LOG_INFO ("Source: \n" << interestHeader);
- uint32_t size = interestHeader.GetSerializedSize();
- NS_LOG_INFO ("GetSerializedSize = " << size);
- //uint32_t size = 5;
- //NS_TEST_ASSERT_MSG_EQ (false, true, "GetSize = " << size);
-
- Buffer buf;
- buf.AddAtStart (size);
- Buffer::Iterator iter = buf.Begin ();
- //interestHeader.
- interestHeader.Serialize(iter);
+ packet.AddHeader (interestHeader);
+ NS_LOG_INFO ("Deserialized packet: " << packet);
- std::ofstream of( "/tmp/file" );
- of.write (reinterpret_cast<const char*> (buf.PeekData ()), size);
- of.close ();
-
- NS_LOG_INFO ("start = " << buf.GetCurrentStartOffset () << " " <<
- "end = " << buf.GetCurrentEndOffset ());
+ NS_LOG_INFO ("Removing and deserializing individual headers");
- iter = buf.Begin ();
CcnxInterestHeader target;
- NS_LOG_INFO ("Trying to deserialize");
- std::cout << "\n";
- size = target.Deserialize (iter);
- buf.RemoveAtEnd (size);
- NS_LOG_INFO ("Deserialized size = " << size);
+ packet.RemoveHeader (target);
+
NS_LOG_INFO ("Target: \n" << target);
+
+ return 0;
}