ns-3
ns3::AsciiTraceHelper Class Reference

Manage ASCII trace files for device models. More...

#include <trace-helper.h>

List of all members.

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< OutputStreamWrapperCreateFileStream (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)

Detailed Description

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.


Member Function Documentation

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.

References NS_LOG_FUNCTION.

Referenced by ns3::SpectrumAnalyzerHelper::Install().


The documentation for this class was generated from the following files: