[ndnSIM] How to get nonce value from the reply object?
Prasertsak U.
gniliamg at gmail.com
Mon Jul 29 05:51:42 PDT 2013
Dear Alex,
Thank you very much about your guide.
Regards,
Prasertsak U.
On Mon, Jul 29, 2013 at 5:40 AM, Alex Afanasyev <
alexander.afanasyev at ucla.edu> wrote:
> Hi!
>
> With Data packet you can really put anything inside as part of the
> content. There are many ways to do that, but in NS-3 the preferred method
> is to use a custom header. It can be something like this:
>
> class NonceHeader : public Header{public:
> static TypeId GetTypeId (void)
> {
> static TypeId tid = TypeId ("ns3::NonceHeader")
> .SetParent<Header> ()
> ;
> return tid;
> }
>
> NonceHeader ()
> : m_nonce (0)
> {
> }
>
> NonceHeader (uint32_t nonce)
> : m_nonce (nonce
> {
> }
>
> uint32_t
> GetNonce () const
> {
> return m_length;
> }
>
> virtual TypeId
> GetInstanceTypeId (void) const
> {
> return NonceHeader::GetTypeId ();
> }
>
> virtual void
> Print (std::ostream &os) const
> {
> os << m_nonce;
> }
>
> virtual uint32_t
> GetSerializedSize (void) const
> {
> return 4;
> }
>
> virtual void
> Serialize (Buffer::Iterator start) const
> {
> start.WriteU32 (m_nonce);
> }
>
> virtual uint32_t
> Deserialize (Buffer::Iterator start)
> {
> m_nonce = start.ReadU32 ();
> return 4;
> }
> private:
> uint32_t m_nonce;};
> ...
> // in producervoidOnInterest (Ptr<const Interest> interest){
> Ptr<Packet> content = Create<Packet> (m_virtualPayloadSize);
> // or just Ptr<Packet> content = Create<Packet> (); if you don't need data packet to carry virtual payload
> NonceHeader hdr (intereset->GetNonce ());
> content->AddHeader (hdr);
>
> Ptr<ContentObject> data = Create<ContentObject> (content);
>
> // the rest is standard from apps/ndn-producer.cc}
> // in consumervoidOnContentObject (Ptr<const ContentObject> data){
> NonceHeader hdr;
> data->GetPayload ()->PeekHeader (hdr);
>
> uint32_t echoedNonce = hdr->GetNonce ();
> // use it somehow}
>
> ---
> Alex
>
> PS
> My example uses API from version 0.5 of ndnSIM, which is a little bit
> different from the "old" one.
>
> On Jul 28, 2013, at 7:01 AM, Prasertsak U. <gniliamg at gmail.com> wrote:
>
> For now, I solve my problem already, which workaround by signature field
> of ContentObject.
>
> // @Provider App.
> void OnInterest(...)
> {
> ndn::ContentObjectHeader data;
> ...
> data.SetSignature(interest->GetNonce());
> ...
> }
>
> // @Consumer App.
> void OnContentObject (...)
> {
> ...
> uint32_t reply_nonce = contentObject->GetSignature();
> ...
> }
>
> Regards,
> Prasertsak U.
>
>
> On Sun, Jul 28, 2013 at 6:52 PM, Prasertsak U. <gniliamg at gmail.com> wrote:
>
>> Dear All,
>>
>> I'm trying to use nonce value from the reply step to map something in the
>> buffer.
>> Unfortunately, I'm not found the way to get nonce value from the reply
>> object in the method "*OnContentObject".* Anybody knows the way or some
>> hints for mapping between request packet and the reply packet. (I mean any
>> headers or fields like a nonce of Interest packet)
>>
>> *Overview Diagram for mapping:*
>> (1) Create Interest Packet -----> (2) Keep sender nonce value -----> (3)
>> waiting for reply
>> (4) Receive Reply content -----> (*5)* Get nonce value from reply objects
>> * ------>
>> (6) mapping with the buffer in step-2 ----> etc.
>>
>>
>> Thank you.
>>
>> Regards,
>> Prasertsak U.
>>
>> Computing Department, Silpakorn University, Thailand.
>>
>>
> _______________________________________________
> ndnSIM mailing list
> ndnSIM at lists.cs.ucla.edu
> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20130729/0d49dd6a/attachment.html>
More information about the ndnSIM
mailing list