[Ndn-interest] NDNLPv2: create lp::packet and add content
Adhy Satya
adhysatya820 at gmail.com
Fri Jul 21 13:39:47 PDT 2017
Just an update:
I was able to create a new field in the NDNLP packet.
I changed the following files:
"ndn-cxx/src/lp/fields.hpp"
typedef detail::FieldDecl<field_location_tags::Header,
uint64_t,
tlv::CustomTag> CustomTagField;
BOOST_CONCEPT_ASSERT((Field<CustomTagField>));
CustomTagField
> FieldSet;
"ndn-cxx/src/lp/tags.hpp"
typedef SimpleTag<uint64_t, 0x60000001> CustomTag;
"ndn-cxx/src/lp/tlv.hpp"
CustomTag= 901
compiled with ./waf
"NFD/daemon/face/generic-link-service.cpp"
void
GenericLinkService::encodeLocalFields(const ndn::TagHost& netPkt,
lp::Packet& lpPacket)
{
shared_ptr<lp::IncomingFaceIdTag> incomingFaceIdTag =
netPkt.getTag<lp::IncomingFaceIdTag>();
if (incomingFaceIdTag != nullptr) {
lpPacket.add<lp::IncomingFaceIdField>(*incomingFaceIdTag);
}
shared_ptr<lp::CustomTag> customTag = netPkt.getTag<lp::CustomTag>();
if (customTag != nullptr) {
lpPacket.add<lp::CustomTagField>(*customTag);
}
}
compiled with ./waf
"ndn-cxx/examples/consumer.cpp"
// Insert Packet Tag
interest.setTag(std::make_shared<lp::CustomTag>(54321));
std::cout << "Tag value: " << interest.getTag<lp::CustomTag>() <<
std::endl;
m_face.expressInterest(interest,
bind(&Consumer::onData, this, _1, _2),
bind(&Consumer::onTimeout, this, _1));
and finally, on the producer app
"ndn-cxx/examples/producer.cpp"
onInterest(const InterestFilter& filter, const Interest& interest)
{
std::cout << "<< I: " << interest << std::endl;
// Read Packet Tag
std::shared_ptr<lp::CustomTag> tag = interest.getTag<lp::CustomTag>();
std::cerr << "Tag from Consumer: " << tag << std::endl;
compiled with ./waf
and ran the applications, but the tag doesn't arrive at the producer:
<< I:
/example/testApp/randomData?ndn.MustBeFresh=1&ndn.InterestLifetime=1000&ndn.Nonce=1547038398
Tag from Consumer: 0
Is there anything missing?
Thank you
On Thu, Jul 20, 2017 at 10:54 PM, Adhy Satya <adhysatya820 at gmail.com> wrote:
> Hi,
>
> Following the idea of exchanging information between the consumer and the
> producer, what's the difference between creating a ndn::lp::Packet or
> a ndn::TagHost? Which method should I use?
>
>
> I saw older posts (this
> <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/2017-February/002260.html>,
> and this
> <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/2016-February/001536.html>),
> but this methods are for CachePolicy and NextHopFaceIdTag. I want to send a
> string "Hello" (type Name actually).
>
> In line with what Ashlesh did, I added the following lines at Consumer (
> https://github.com/named-data/ndn-cxx/blob/master/
> examples/consumer.cpp#L42), but need help with the commented lines.
>
> ndn::lp::Packet lpPacket;
> // add string ("Hello") to lpPacket
> // send lpPacket
>
> And then I'll need to read that packet in the producer.
>
>
> Thanks again for your help.
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20170721/437e3c2c/attachment.html>
More information about the Ndn-interest
mailing list