<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi!<div><br></div><div>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:</div><div><br></div><div><pre style="overflow-x: auto; overflow-y: hidden; padding: 5px; background-color: rgb(238, 255, 204); color: rgb(51, 51, 51); line-height: 15.199999809265137px; border-top-width: 1px; border-bottom-width: 1px; border-style: solid none; border-top-color: rgb(170, 204, 153); border-bottom-color: rgb(170, 204, 153); "><span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">class</span> <span class="nc" style="color: rgb(14, 132, 181); font-weight: bold;">NonceHeader</span> <span class="o" style="color: rgb(102, 102, 102);">:</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">public</span> <span class="n">Header</span>
<span class="p">{</span>
<span class="nl" style="color: rgb(0, 32, 112); font-weight: bold;">public:</span>
  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">static</span> <span class="n">TypeId</span> <span class="n">GetTypeId</span> <span class="p">(</span><span class="kt" style="color: rgb(144, 32, 0);">void</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">static</span> <span class="n">TypeId</span> <span class="n">tid</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">TypeId</span> <span class="p">(</span><span class="s" style="color: rgb(64, 112, 160);">"ns3::NonceHeader"</span><span class="p">)</span>
      <span class="p">.</span><span class="n">SetParent</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="n">Header</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="p">()</span>
      <span class="p">;</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="n">tid</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="n">NonceHeader</span> <span class="p">()</span>
    <span class="o" style="color: rgb(102, 102, 102);">:</span> <span class="n">m_nonce</span> <span class="p">(</span><span class="mi" style="color: rgb(32, 128, 80);">0</span><span class="p">)</span>
  <span class="p">{</span>
  <span class="p">}</span>

  <span class="n">NonceHeader</span> <span class="p">(</span><span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span> <span class="n">nonce</span><span class="p">)</span>
    <span class="o" style="color: rgb(102, 102, 102);">:</span> <span class="n">m_nonce</span> <span class="p">(</span><span class="n">nonce</span>
  <span class="p">{</span>
  <span class="p">}</span>

  <span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span>
  <span class="n">GetNonce</span> <span class="p">()</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span>
  <span class="p">{</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="n">m_length</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">virtual</span> <span class="n">TypeId</span>
  <span class="n">GetInstanceTypeId</span> <span class="p">(</span><span class="kt" style="color: rgb(144, 32, 0);">void</span><span class="p">)</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span>
  <span class="p">{</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="n">NonceHeader</span><span class="o" style="color: rgb(102, 102, 102);">::</span><span class="n">GetTypeId</span> <span class="p">();</span>
  <span class="p">}</span>

  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">virtual</span> <span class="kt" style="color: rgb(144, 32, 0);">void</span>
  <span class="n">Print</span> <span class="p">(</span><span class="n">std</span><span class="o" style="color: rgb(102, 102, 102);">::</span><span class="n">ostream</span> <span class="o" style="color: rgb(102, 102, 102);">&</span><span class="n">os</span><span class="p">)</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span>
  <span class="p">{</span>
    <span class="n">os</span> <span class="o" style="color: rgb(102, 102, 102);"><<</span> <span class="n">m_nonce</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">virtual</span> <span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span>
  <span class="n">GetSerializedSize</span> <span class="p">(</span><span class="kt" style="color: rgb(144, 32, 0);">void</span><span class="p">)</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span>
  <span class="p">{</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="mi" style="color: rgb(32, 128, 80);">4</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">virtual</span> <span class="kt" style="color: rgb(144, 32, 0);">void</span>
  <span class="n">Serialize</span> <span class="p">(</span><span class="n">Buffer</span><span class="o" style="color: rgb(102, 102, 102);">::</span><span class="n">Iterator</span> <span class="n">start</span><span class="p">)</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span>
  <span class="p">{</span>
    <span class="n">start</span><span class="p">.</span><span class="n">WriteU32</span> <span class="p">(</span><span class="n">m_nonce</span><span class="p">);</span>
  <span class="p">}</span>

  <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">virtual</span> <span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span>
  <span class="n">Deserialize</span> <span class="p">(</span><span class="n">Buffer</span><span class="o" style="color: rgb(102, 102, 102);">::</span><span class="n">Iterator</span> <span class="n">start</span><span class="p">)</span>
  <span class="p">{</span>
    <span class="n">m_nonce</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">start</span><span class="p">.</span><span class="n">ReadU32</span> <span class="p">();</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">return</span> <span class="mi" style="color: rgb(32, 128, 80);">4</span><span class="p">;</span>
  <span class="p">}</span>

<span class="nl" style="color: rgb(0, 32, 112); font-weight: bold;">private:</span>
  <span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span> <span class="n">m_nonce</span><span class="p">;</span>
<span class="p">};</span>

<span class="p">...</span>

<span class="c1" style="color: rgb(64, 128, 144); font-style: italic;">// in producer</span>
<span class="kt" style="color: rgb(144, 32, 0);">void</span>
<span class="n">OnInterest</span> <span class="p">(</span><span class="n">Ptr</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span> <span class="n">Interest</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="n">interest</span><span class="p">)</span>
<span class="p">{</span>
  <span class="n">Ptr</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="n">Packet</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="n">content</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">Create</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="n">Packet</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="p">(</span><span class="n">m_virtualPayloadSize</span><span class="p">);</span>
  <span class="c1" style="color: rgb(64, 128, 144); font-style: italic;">// or just Ptr<Packet> content = Create<Packet> ();  if you don't need data packet to carry virtual payload</span>
  <span class="n">NonceHeader</span> <span class="nf" style="color: rgb(6, 40, 126);">hdr</span> <span class="p">(</span><span class="n">intereset</span><span class="o" style="color: rgb(102, 102, 102);">-></span><span class="n">GetNonce</span> <span class="p">());</span>
  <span class="n">content</span><span class="o" style="color: rgb(102, 102, 102);">-></span><span class="n">AddHeader</span> <span class="p">(</span><span class="n">hdr</span><span class="p">);</span>

  <span class="n">Ptr</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="n">ContentObject</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="n">data</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">Create</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="n">ContentObject</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="p">(</span><span class="n">content</span><span class="p">);</span>

  <span class="c1" style="color: rgb(64, 128, 144); font-style: italic;">// the rest is standard from apps/ndn-producer.cc</span>
<span class="p">}</span>

<span class="c1" style="color: rgb(64, 128, 144); font-style: italic;">// in consumer</span>
<span class="kt" style="color: rgb(144, 32, 0);">void</span>
<span class="n">OnContentObject</span> <span class="p">(</span><span class="n">Ptr</span><span class="o" style="color: rgb(102, 102, 102);"><</span><span class="k" style="color: rgb(0, 112, 32); font-weight: bold;">const</span> <span class="n">ContentObject</span><span class="o" style="color: rgb(102, 102, 102);">></span> <span class="n">data</span><span class="p">)</span>
<span class="p">{</span>
  <span class="n">NonceHeader</span> <span class="n">hdr</span><span class="p">;</span>
  <span class="n">data</span><span class="o" style="color: rgb(102, 102, 102);">-></span><span class="n">GetPayload</span> <span class="p">()</span><span class="o" style="color: rgb(102, 102, 102);">-></span><span class="n">PeekHeader</span> <span class="p">(</span><span class="n">hdr</span><span class="p">);</span>

  <span class="kt" style="color: rgb(144, 32, 0);">uint32_t</span> <span class="n">echoedNonce</span> <span class="o" style="color: rgb(102, 102, 102);">=</span> <span class="n">hdr</span><span class="o" style="color: rgb(102, 102, 102);">-></span><span class="n">GetNonce</span> <span class="p">();</span>
  <span class="c1" style="color: rgb(64, 128, 144); font-style: italic;">// use it somehow</span>
<span class="p">}</span></pre><div>---</div></div><div>Alex</div><div><br></div><div>PS</div><div>My example uses API from version 0.5 of ndnSIM, which is a little bit different from the "old" one.</div><div><br><div><div>On Jul 28, 2013, at 7:01 AM, Prasertsak U. <<a href="mailto:gniliamg@gmail.com">gniliamg@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div>For now, I solve my problem already, which workaround by signature field of ContentObject.</div><div><br></div><div>//  @Provider App.</div><div>void OnInterest(...)</div><div>{</div><div>     ndn::ContentObjectHeader data;</div>

<div>     ...</div><div>     data.SetSignature(interest->GetNonce());</div><div>     ...</div><div>}</div><div><br></div><div>// @Consumer App.</div><div>void OnContentObject (...)</div><div>{</div><div>     ...</div>
<div>
     uint32_t reply_nonce = contentObject->GetSignature();</div><div>     ...</div><div>}</div><div><br></div><div style="">Regards,</div><div style="">Prasertsak U.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Sun, Jul 28, 2013 at 6:52 PM, Prasertsak U. <span dir="ltr"><<a href="mailto:gniliamg@gmail.com" target="_blank">gniliamg@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">Dear All,<div><br></div><div>I'm trying to use nonce value from the reply step to map something in the buffer. </div><div>Unfortunately, I'm not found the way to get nonce value from the reply object in the method "<span style="font-family:Menlo;font-size:11px"><i><u>OnContentObject</u>".</i> </span>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)</div>


<div><br></div><div><b>Overview Diagram for mapping:</b></div><div>(1) Create Interest Packet -----> (2) Keep sender nonce value -----> (3) waiting for reply </div><div>(4) Receive Reply content -----> (*5)<u> Get nonce value from reply objects</u> ------> </div>


<div>(6) mapping with the buffer in step-2 ----> etc.</div><div> <br></div><div><br></div><div>Thank you.</div><div><br></div><div>Regards,</div><div>Prasertsak U.<br></div><div>
<br></div><div>Computing Department, Silpakorn University, Thailand.</div><div><br></div></div>
</blockquote></div><br></div>
_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu">ndnSIM@lists.cs.ucla.edu</a><br>http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim<br></blockquote></div><br></div></body></html>