I am reading the Ns3 tutorial - tracing system .

I am so confused ! I can't seem to grab fully understand the Tracing source and Tracing sink.

I understood that :

Tracing source generates events . They contains a list of callback functions

Trace Sink : when connected to the Tracing source, gets notified when event happen/change . and they do certain things with the information gathered.

I understood this in Theory, but lets boil it down to the NS3 Tracing system.

1 ) Can anybody give me an example about : Tracing Source and Tracing sink ?

2) Are the tracing source build in codes ?

3) Are the trace sinks build in codes or I have to write them ??

4) Let me quote from the tutorial :
When a trace sink expresses interest in notifications from a trace source, it basically just arranges to add its own function to the callback list.
what does that mean ?!!

PS: I did try to read the whole page MANY MANY times and I couldnt fully understand what is really going on there !

your help is HIGHLY appreciated