Debugging and resolving problems with interest serialization/deserialization
diff --git a/examples/interest-header-example.cc b/examples/interest-header-example.cc
index 8a4a57a..83895ad 100644
--- a/examples/interest-header-example.cc
+++ b/examples/interest-header-example.cc
@@ -12,46 +12,68 @@
#include "ns3/log.h"
using namespace ns3;
+#include <fstream>
NS_LOG_COMPONENT_DEFINE ("InterestHeaderExample");
int
main (int argc, char *argv[])
{
+ LogComponentEnable ("InterestHeaderExample", LOG_ALL);
+
NS_LOG_INFO ("Test started");
- uint32_t randomNonce = UniformVariable().GetInteger(1, std::numeric_limits<uint32_t>::max ());
- Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
- (*testname) ("test") ("test2");
-
- Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
- (*testname) ("exclude") ("exclude2");
-
- Time lifetime = Seconds(4.0);
- bool child = true;
-
- uint32_t maxSuffixComponents = 40;
- uint32_t minSuffixComponents = 20;
-
+
CcnxInterestHeader interestHeader;
- interestHeader.SetNonce(randomNonce);
+
+ Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
+ (*testname) ("first") ("second");
interestHeader.SetName(testname);
- interestHeader.SetInterestLifetime(lifetime);
- interestHeader.SetChildSelector(child);
- interestHeader.SetExclude(exclude);
- interestHeader.SetMaxSuffixComponents(maxSuffixComponents);
+
+ uint32_t minSuffixComponents = 20;
interestHeader.SetMinSuffixComponents(minSuffixComponents);
+
+ uint32_t maxSuffixComponents = 40;
+ interestHeader.SetMaxSuffixComponents(maxSuffixComponents);
+
+ Time lifetime = Seconds(661777) + MicroSeconds(1234);
+ interestHeader.SetInterestLifetime(lifetime);
+
+ bool child = true;
+ interestHeader.SetChildSelector(child);
+
+ Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
+ (*exclude) ("exclude1") ("exclude2");
+ interestHeader.SetExclude(exclude);
+
+ 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);
uint32_t size = interestHeader.GetSerializedSize();
- NS_LOG_INFO ("Size = " << size);
+ NS_LOG_INFO ("GetSerializedSize = " << size);
//uint32_t size = 5;
//NS_TEST_ASSERT_MSG_EQ (false, true, "GetSize = " << size);
- Buffer buf(size);
+ Buffer buf;
+ buf.AddAtStart (size);
Buffer::Iterator iter = buf.Begin ();
//interestHeader.
- //interestHeader.Serialize(iter);
-
+ interestHeader.Serialize(iter);
+
+ 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 ());
+
iter = buf.Begin ();
CcnxInterestHeader target;
-
-}
\ No newline at end of file
+ NS_LOG_INFO ("Trying to deserialize");
+ std::cout << "\n";
+ size = target.Deserialize (iter);
+ buf.RemoveAtEnd (size);
+ NS_LOG_INFO ("Deserialized size = " << size);
+ NS_LOG_INFO ("Target: \n" << target);
+}