Manage ASCII trace files for device models. More...
#include <trace-helper.h>
Public Member Functions | |
| AsciiTraceHelper () | |
| Create an ascii trace helper. More... | |
| ~AsciiTraceHelper () | |
| Destroy an ascii trace helper. More... | |
| 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. 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
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) |
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 128 of file trace-helper.h.
| ns3::AsciiTraceHelper::AsciiTraceHelper | ( | ) |
Create an ascii trace helper.
Definition at line 173 of file trace-helper.cc.
References NS_LOG_FUNCTION_NOARGS.
| ns3::AsciiTraceHelper::~AsciiTraceHelper | ( | ) |
Destroy an ascii trace helper.
Definition at line 178 of file trace-helper.cc.
References NS_LOG_FUNCTION_NOARGS.
| 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.
| filename | file name |
| filemode | file mode |
Definition at line 184 of file trace-helper.cc.
References NS_LOG_FUNCTION.
Referenced by DsdvManetExample::CreateDevices(), 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(), ns3::SpectrumAnalyzerHelper::Install(), main(), Experiment::Run(), RoutingExperiment::Run(), TraceCwnd(), and TraceSsThresh().
Here is the caller graph for this function:
|
static |
Definition at line 363 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by ns3::WimaxHelper::EnableAsciiForConnection(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), and HookDefaultDequeueSinkWithContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 356 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by HookDefaultDequeueSinkWithoutContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 336 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by ns3::WimaxHelper::EnableAsciiForConnection(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), ns3::InternetStackHelper::EnableAsciiIpv4Internal(), and HookDefaultDropSinkWithContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 329 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by HookDefaultDropSinkWithoutContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 310 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by ns3::WimaxHelper::EnableAsciiForConnection(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), and HookDefaultEnqueueSinkWithContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 303 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by HookDefaultEnqueueSinkWithoutContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 387 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by ns3::FdNetDeviceHelper::EnableAsciiInternal(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), and HookDefaultReceiveSinkWithContext().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 380 of file trace-helper.cc.
References ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by HookDefaultReceiveSinkWithoutContext().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string ns3::AsciiTraceHelper::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.
| prefix | prefix string |
| device | NetDevice |
| useObjectNames | use node and device names instead of indexes |
Definition at line 205 of file trace-helper.cc.
References ns3::Names::FindName(), ns3::Node::GetId(), NS_ABORT_MSG_UNLESS, and NS_LOG_FUNCTION.
Referenced by ns3::FdNetDeviceHelper::EnableAsciiInternal(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), ns3::YansWifiPhyHelper::EnableAsciiInternal(), ns3::WimaxHelper::EnableAsciiInternal(), and ns3::SpectrumAnalyzerHelper::Install().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string ns3::AsciiTraceHelper::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.
| prefix | prefix string |
| object | interface (such as Ipv4Interface or Ipv6Interface) |
| interface | interface id |
| useObjectNames | use node and device names instead of indexes |
Definition at line 250 of file trace-helper.cc.
References ns3::Names::FindName(), ns3::Node::GetId(), ns3::Object::GetObject(), NS_ABORT_MSG_UNLESS, and NS_LOG_FUNCTION.
Referenced by ns3::InternetStackHelper::EnableAsciiIpv4Internal(), and ns3::InternetStackHelper::EnableAsciiIpv6Internal().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| context | context string |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 352 of file trace-helper.h.
References DefaultDequeueSinkWithContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Here is the call graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 343 of file trace-helper.h.
References DefaultDequeueSinkWithoutContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Referenced by ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), and ns3::CsmaHelper::EnableAsciiInternal().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| context | context string |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 330 of file trace-helper.h.
References DefaultDropSinkWithContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Here is the call graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 321 of file trace-helper.h.
References DefaultDropSinkWithoutContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Referenced by ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), and ns3::InternetStackHelper::EnableAsciiIpv4Internal().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| context | context string |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 308 of file trace-helper.h.
References DefaultEnqueueSinkWithContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Here is the call graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 299 of file trace-helper.h.
References DefaultEnqueueSinkWithoutContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Referenced by ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), and ns3::CsmaHelper::EnableAsciiInternal().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| context | context string |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 374 of file trace-helper.h.
References DefaultReceiveSinkWithContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Here is the call graph for this function:| void ns3::AsciiTraceHelper::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.
| object | object |
| traceName | trace source name |
| stream | output stream wrapper |
Definition at line 365 of file trace-helper.h.
References DefaultReceiveSinkWithoutContext(), ns3::MakeBoundCallback(), and NS_ASSERT_MSG.
Referenced by ns3::FdNetDeviceHelper::EnableAsciiInternal(), ns3::EmuHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), and ns3::CsmaHelper::EnableAsciiInternal().
Here is the call graph for this function:
Here is the caller graph for this function: