Manage ASCII trace files for device models. More...
#include <trace-helper.h>
Public Member Functions | |
| AsciiTraceHelper () | |
| Create an ascii trace helper. | |
| ~AsciiTraceHelper () | |
| Destroy an ascii trace helper. | |
| std::string | GetFilenameFromDevice (std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true) |
| Let the ascii trace helper figure out a reasonable filename to use for an ascii trace file associated with a device. | |
| std::string | GetFilenameFromInterfacePair (std::string prefix, Ptr< Object > object, uint32_t interface, bool useObjectNames=true) |
| Let the ascii trace helper figure out a reasonable filename to use for an ascii trace file associated with a node. | |
| Ptr< OutputStreamWrapper > | CreateFileStream (std::string filename, std::ios::openmode filemode=std::ios::out) |
| Create and initialize an output stream object we'll use to write the traced bits. | |
| template<typename T > | |
| void | HookDefaultEnqueueSinkWithoutContext (Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default enqueue operation trace sink that does not accept nor log a trace context. | |
| template<typename T > | |
| void | HookDefaultEnqueueSinkWithContext (Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default enqueue operation trace sink that does accept and log a trace context. | |
| template<typename T > | |
| void | HookDefaultDropSinkWithoutContext (Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default drop operation trace sink that does not accept nor log a trace context. | |
| template<typename T > | |
| void | HookDefaultDropSinkWithContext (Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default drop operation trace sink that does accept and log a trace context. | |
| template<typename T > | |
| void | HookDefaultDequeueSinkWithoutContext (Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default dequeue operation trace sink that does not accept nor log a trace context. | |
| template<typename T > | |
| void | HookDefaultDequeueSinkWithContext (Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default dequeue operation trace sink that does accept and log a trace context. | |
| template<typename T > | |
| void | HookDefaultReceiveSinkWithoutContext (Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default receive operation trace sink that does not accept nor log a trace context. | |
| template<typename T > | |
| void | HookDefaultReceiveSinkWithContext (Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream) |
| Hook a trace source to the default receive operation trace sink that does accept and log a trace context. | |
Static Public Member Functions | |
| static void | DefaultEnqueueSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p) |
| static void | DefaultEnqueueSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p) |
| static void | DefaultDropSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p) |
| static void | DefaultDropSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p) |
| static void | DefaultDequeueSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p) |
| static void | DefaultDequeueSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p) |
| static void | DefaultReceiveSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p) |
| static void | DefaultReceiveSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p) |
Manage ASCII trace files for device models.
Handling ascii trace files is a common operation for ns-3 devices. It is useful to provide a common base class for dealing with these ops.
| Ptr<OutputStreamWrapper> ns3::AsciiTraceHelper::CreateFileStream | ( | std::string | filename, | |
| std::ios::openmode | filemode = std::ios::out | |||
| ) |
Create and initialize an output stream object we'll use to write the traced bits.
One of the common issues users run into when trying to use tracing in ns-3 is actually a design decision made in the C++ stream library. It is not widely known that copy and assignment of iostreams is forbidden by std::basic_ios<>. This is because it is not possible to predict the semantics of the stream desired by a user.
The tempting ns-3 idiom when tracing to a file is to create a bound callback with an ofstream as the bound object. Unfortunately, this implies a copy construction in order to get the ofstream object into the callback. This operation, as mentioned above, is forbidden by the STL. You could use a global ostream and pass a pointer to it, but that is pretty ugly. You could create an ostream on the stack and pass a pointer to it, but you may run into object lifetime issues. Ns-3 has a nice reference counted object that can solve the problem so we use one of those to carry the stream around and deal with the lifetime issues.
1.7.1