[ndnSIM] how to trace the self-defined element in ndnsim?

yao hu huyao0107 at gmail.com
Sun Apr 14 22:11:14 PDT 2013

Hi Alex,

Thanks for reply and advice.

I am calling from ns3::ndn::fib::Entry. It seems there is no GetNode ()
method in it

error: ‘class ns3::ndn::fib::Entry’ has no member named ‘GetNode’


2013/4/15 Alex Afanasyev <alexander.afanasyev at ucla.edu>

> Hi huyao,
> I see.  You can just print to std::cout (or some predefined file) for now,
> but ideally it should be something like TraceSource, which is configured
> during the runtime (in a specific scenario).
> To solve your error of obtaining node id, you need to write slightly
> differently, since "Face" object (I'm assuming you're calling from some
> method of Face object) is not aggregated to Node and to get node, you just
> need simply call GetNode () method.  Something like this:
> std::cout << this->GetNode ()->GetId ();
> One more note.  If you need this logging just for debug purposes, then you
> can simply output the desired values with NS_LOG* methods, which will
> output node ID as part of the output (when enabled with NS_LOG
> environmental variable).
> ---
> Alex
> On Apr 14, 2013, at 7:52 PM, yao hu <huyao0107 at gmail.com> wrote:
> Hi Alex,
> I see. Thanks for your warning. At this stage, I just want to record and
> print the values to cout or some file whenever some element changes.
> Besides, I also saw that the output logging information does not include
> the ID of the related node. I am not sure the output behavior information
> is from which node.  So is there a way to add such a node id information
> before each logging information. I used
> Ptr<ns3::Node> node = this->GetObject<ns3::Node> (); node->GetId(),
> but it failed..
> ./ns3/ptr.h:410:7: error: invalid use of incomplete type ‘struct ns3::Node’
> ./ns3/ndn-face.h:37:7: error: forward declaration of ‘struct ns3::Node’
> Regards,
> huyao
> 2013/4/15 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>> Hi huyao,
>> **Do not** use NS_LOG to obtain metrics, as it is designed and is used
>> only for debug purposes to output some helpful information.  Most of the
>> logging statements are disabled (and must be disabled) when you compile in
>> optimized version (./waf configure -d optimized).
>> Btw. Do you want periodically save values from your array to file, or
>> save all the values whenever some element changes?  The reason I'm asking
>> is that solution could be completely different.
>> ---
>> Alex
>> On Apr 13, 2013, at 8:46 AM, yao hu <huyao0107 at gmail.com> wrote:
>> Hi Alex,
>> Thanks very much for your guidance.
>> After I tried following your instruction, however, I still felt a little
>> confused by the callback to the trace source. Simply speaking, I defined a
>> uint32_t array in ndn-forwarding-strategy.cc which will continuously store
>> the incoming faceid information when simulation runs. If I just want to
>> record the values of each element in this array into a local file using ns3
>> tracing, how should I select a simple way to do this? Just using NS_LOG or
>> something is possible?
>> Thanks a lot again~
>> Regards,
>> huyao
>> 2013/4/13 Alex Afanasyev <alexander.afanasyev at ucla.edu>
>>> Hi huyao,
>>> 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.
>>> 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.
>>> There is also a TraceValue, which can automate some notification tasks,
>>> if you're tracing just a value.
>>> Both methods require a couple of things.  For TraceSource, you need to
>>> define a local TracedCallback (like this
>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.h#L482)
>>> and then define a way to connect to this variable in GetTypeId method (like
>>> this
>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L71).
>>>  Afterwards, you just use the locally defined TracedCallback as if it is a
>>> function (like this
>>> https://github.com/NDN-Routing/ndnSIM/blob/master/model/fw/ndn-forwarding-strategy.cc#L586
>>> ).
>>> 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
>>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.h#L98.
>>>  Then add a line into GetTypeId call, similar to this
>>> https://github.com/NDN-Routing/ndnSIM/blob/master/apps/ndn-consumer-window.cc#L65
>>> .
>>> To connect to variables, you need to use either
>>> Config::Connect/Config::ConnectWithoutContext method, or Object's
>>> TraceConnect (
>>> http://www.nsnam.org/doxygen-release/classns3_1_1_object_base.html#ada3a45b34bc23114a25e0ab19188276e
>>> ).
>>> 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.
>>> ---
>>> Alex
>>> On Apr 12, 2013, at 9:37 AM, yao hu <huyao0107 at gmail.com> wrote:
>>> Hi Alex,
>>> 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?
>>> Thanks a lot!!
>>> Regards,
>>> huyao
>>> _______________________________________________
>>> ndnSIM mailing list
>>> ndnSIM at lists.cs.ucla.edu
>>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>> _______________________________________________
>> ndnSIM mailing list
>> ndnSIM at lists.cs.ucla.edu
>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
> _______________________________________________
> 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/20130415/e7692ab9/attachment.html>

More information about the ndnSIM mailing list