<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; "><div>Hi huyao,</div><div><br></div><div>Technically, you have many options how to trace self-defined variables.  If you really want to, you can just directly dump the values to std::cout or to some file.</div><div><br></div><div>If you want to go with NS-3-style tracing, you would need to use either TraceSource, with which you explicitly notifying (somebody, who is configured in the simulation scenario using Connect calls) before or after you change the value.</div><div><br></div><div>There is also a TraceValue, which can automate some notification tasks, if you're tracing just a value.  </div><div><br></div><div>Both methods require a couple of things.  For TraceSource, you need to define a local TracedCallback (like this <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482">https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482</a>) and then define a way to connect to this variable in GetTypeId method (like this <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71">https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71</a>).  Afterwards, you just use the locally defined TracedCallback as if it is a function (like this <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586">https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586</a>).</div><div><br></div><div>For TracedValue, you need to define the variable that you want to trace in a slightly different way (it is no longer a simple variable), like this <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98">https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98</a>.  Then add a line into GetTypeId call, similar to this <a href="https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65">https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65</a>.</div><div><br></div><div>To connect to variables, you need to use either Config::Connect/Config::ConnectWithoutContext method, or Object's TraceConnect (<a href="http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e">http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e</a>).</div><div><br></div><div><br></div><div>Let us know if you have more questions.  If you can give more specific description of what you want to trace, then we may give more concrete suggestion of what is the best way to do it.</div><div><br></div><div>---</div><div>Alex</div><br><div><div>On Apr 12, 2013, at 9:37 AM, yao hu <<a href="mailto:huyao0107@gmail.com">huyao0107@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hi Alex,<div><br></div><div style="">Maybe this is not related to ndnsim, just about ns3. Could you please give a hint about how to trace or record the value of some self-defined variable like each element in some array somewhere in ndnsim when simulation runs?</div>
<div style=""><br></div><div style="">Thanks a lot!!</div><div style=""><br></div><div style="">Regards,</div><div style="">huyao</div></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></body></html>