Finalizing packet serialization. Set boost requirement (module will not be compiled without boost)
diff --git a/helper/ccnx-coding-helper.cc b/helper/ccnx-coding-helper.cc
index 6899543..7cab398 100644
--- a/helper/ccnx-coding-helper.cc
+++ b/helper/ccnx-coding-helper.cc
@@ -25,6 +25,7 @@
#include "ns3/ccnx-content-object-header.h"
#include <sstream>
+#include <boost/foreach.hpp>
namespace ns3 {
@@ -75,9 +76,15 @@
}
size_t
-CcnxCodingHelper::AppendName (Buffer::Iterator start, const Name::Components &name)
+CcnxCodingHelper::AppendNameComponents (Buffer::Iterator start, const Name::Components &name)
{
- return 0;
+ size_t written = 0;
+ BOOST_FOREACH (const std::string &component, name.GetComponents())
+ {
+ written += AppendTaggedBlob (start, CCN_DTAG_Component,
+ reinterpret_cast<const uint8_t*>(component.c_str()), component.size());
+ }
+ return written;
}
size_t
@@ -130,7 +137,7 @@
written += AppendBlockHeader (start, CCN_DTAG_Interest, CCN_DTAG); // <Interest>
written += AppendBlockHeader (start, CCN_DTAG_Name, CCN_DTAG); // <Name>
- written += AppendName (start, interest.GetName()); // <Component>...</Component>...
+ written += AppendNameComponents (start, interest.GetName()); // <Component>...</Component>...
written += AppendCloser (start); // </Name>
if (interest.GetMinSuffixComponents() >= 0)
@@ -148,7 +155,7 @@
if (interest.GetExclude().size() > 0)
{
written += AppendBlockHeader (start, CCN_DTAG_Exclude, CCN_DTAG); // <Exclude>
- written += AppendName (start, interest.GetExclude()); // <Component>...</Component>...
+ written += AppendNameComponents (start, interest.GetExclude()); // <Component>...</Component>...
written += AppendCloser (start); // </Exclude>
}
if (interest.IsEnabledChildSelector())
@@ -201,7 +208,9 @@
written += AppendTaggedBlob (start, CCN_DTAG_SignatureBits, 0, 0); // <SignatureBits />
written += AppendCloser (start); // </Signature>
- written += AppendName (start, contentObject.GetName()); // <Name><Component>...</Component>...</Name>
+ written += AppendBlockHeader (start, CCN_DTAG_Name, CCN_DTAG); // <Name>
+ written += AppendNameComponents (start, contentObject.GetName()); // <Component>...</Component>...
+ written += AppendCloser (start); // </Name>
// fake signature
written += AppendBlockHeader (start, CCN_DTAG_SignedInfo, CCN_DTAG); // <SignedInfo>