diff --git a/doc/tracing.h b/doc/tracing.h index 720e9a334..f3db38481 100644 --- a/doc/tracing.h +++ b/doc/tracing.h @@ -106,11 +106,59 @@ * for each trace source: a signature of the user trace sink must match * _exactly_ the signature documented in the \ref TraceSourceList. * - * \section TraceConnection Connecting Trace Sources to Trace Sinks * - * Since there is no working magic here, defining a trace sink does not connect - * it directly to a set of trace sources. To connect a trace sink, a user must call - * ns3::NodeList::Connect. The second argument is a callback to the user's trace sink. + * \section TraceSourceSimpleExport A simple way to connect Trace Sources with Trace Sinks + * + * The crux of the complexity of the ns-3 tracing system comes from its + * flexible system used to connect trace sources to trace sinks but what is really + * nice about it is that it is not necessary to use it to setup simple traces. + * + * The simplest way to export a set of trace sources to a user, for example, + * during the early prototyping phases of a system, is to add a set of public methods + * to give to your users access to the trace source object instances you use to generate + * trace events: + * \code + * class MyModel + * { + * public: + * void DoSomething (Packet packet) + * { + * // report this event on packet + * m_doSomething (packet); + * // do something + * } + * CallbackTraceSource *PeekSomethingTraceSource (void) const + * { + * return &m_doSomething + * } + * private: + * // report every "something" function call. + * CallbackTraceSource m_doSomething; + * }; + * \endcode + * If your users hold a pointer to an instance of MyModel, and if they want to connect + * a MySomethingSink, they can simply do the following which invokes the + * TraceSource::AddCallback method and creates a Callback object from the user's + * sink with the MakeCallback function. + * \code + * void + * MySomethingSink (const TraceContext &context, Packet packet) + * { + * // do whatever you want. + * } + * MyModel *model = ...; + * model->AddCallback (MakeCallback (&MySomethingSink)); + * \endcode + * + * The full power of the tracing system comes however from its ns3::NodeList::Connect + * method which is described in the following sections. + * + * \section TraceConnection Connecting Trace Sources to Trace Sinks + * + * If a trace source is integrated in the ns-3 trace connection facility, a user + * should call the ns3::NodeList::Connect method to establish a connection between + * a trace sink and a set of matching trace sources. The second argument to that + * method is a callback to the user's trace sink. * That callback is easy to construct: call ns3::MakeCallback and you are done. The * first argument is a string whose format is similar to a unix path and which is * used to uniquely identify the set of trace sources you want to connect to. @@ -187,10 +235,6 @@ * } * \endcode * - * \section TraceSourceSimpleExport A simple way to export Trace Sources - * - * XXX - * * \section ExportingTraceSources Exporting new Trace Sources * * Using existing trace sources to connect them to a set of adhoc trace sinks