doc/howtos/howtos-callbacks.h
changeset 2217 0b4567d545de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/howtos/howtos-callbacks.h	Thu Jan 10 07:31:40 2008 -0800
@@ -0,0 +1,38 @@
+/*!
+\page callbacks Using ns-3 callbacks
+\anchor howtos-callbacks
+
+\section null_callbacks Null Callbacks
+
+<b>Question:</b> The API I am using calls for using a callback (in the 
+function signature), but I do not
+want to provide one.  Is there a way to provide a null callback?
+
+<b>Answer:</b> Use the ns3::MakeNullCallback construct:
+\code
+template<typename R>
+Callback< R, T1, T2, T3, T4, T5, T6 > ns3::MakeNullCallback (void)
+\endcode
+
+Example usage:  The ns3::Socket class uses callbacks to indicate completion
+of events such as a successful TCP connect().  These callbacks are set
+in the following function:
+\code
+  void Socket::SetConnectCallback (Callback<void, Ptr<Socket> > connectionSucceeded,
+                        Callback<void, Ptr<Socket> > connectionFailed,
+                        Callback<void, Ptr<Socket> > halfClose);
+
+\endcode
+But suppose you do not care about registering a callback for the 
+halfClose event (but you want to register one for the 
+connectionSucceeded and connectionFailed cases).  In that case, you
+can pass a null callback as the third argument.  You just need to
+pass a callback with the matching signature, as follows:
+\code
+  localSocket->SetConnectCallback (
+  MakeCallback (&ConnectionSucceededCallback),
+  MakeCallback (&ConnectionFailedCallback),
+  MakeNullCallback<void, Ptr<Socket> > () );
+\endcode
+
+*/