A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ns3::AsciiTraceHelper Class Reference

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.
 
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. More...
 
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.
 
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 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 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 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 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 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 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.
 
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.
 

Static Public Member Functions

static void DefaultDequeueSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
 
static void DefaultDequeueSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
 
static void DefaultDropSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
 
static void DefaultDropSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
 
static void DefaultEnqueueSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
 
static void DefaultEnqueueSinkWithoutContext (Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
 
static void DefaultReceiveSinkWithContext (Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
 
static void DefaultReceiveSinkWithoutContext (Ptr< OutputStreamWrapper > file, 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.

Definition at line 109 of file trace-helper.h.

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.

Definition at line 184 of file trace-helper.cc.

References NS_LOG_FUNCTION.

Referenced by MobilityTraceTestCase::DoRun(), Ns3TcpLossTestCase::DoRun(), ns3::FdNetDeviceHelper::EnableAsciiInternal(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), ns3::YansWifiPhyHelper::EnableAsciiInternal(), ns3::WimaxHelper::EnableAsciiInternal(), ns3::InternetStackHelper::EnableAsciiIpv4Internal(), ns3::InternetStackHelper::EnableAsciiIpv6Internal(), and ns3::SpectrumAnalyzerHelper::Install().


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