19 #ifndef TRACE_HELPER_H    20 #define TRACE_HELPER_H    22 #include "ns3/assert.h"    23 #include "ns3/net-device-container.h"    24 #include "ns3/node-container.h"    25 #include "ns3/simulator.h"    26 #include "ns3/pcap-file-wrapper.h"    27 #include "ns3/output-stream-wrapper.h"    95                                             uint32_t interface, 
bool useObjectNames = 
true);
   108                                    std::ios::openmode filemode,
   111                                    int32_t tzCorrection = 0);
   146 template <
typename T> 
void   151   NS_ASSERT_MSG (result == 
true, 
"PcapHelper::HookDefaultSink():  Unable to hook \"" << tracename << 
"\"");
   196                                             uint32_t interface, 
bool useObjectNames = 
true);
   223                                              std::ios::openmode filemode = std::ios::out);
   233   template <
typename T> 
   245   template <
typename T> 
   257   template <
typename T> 
   269   template <
typename T> 
   281   template <
typename T> 
   293   template <
typename T> 
   305   template <
typename T> 
   317   template <
typename T> 
   460 template <
typename T> 
void   465   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultEnqueueSinkWithoutContext():  Unable to hook \""    466                  << tracename << 
"\"");
   469 template <
typename T> 
void   473   std::string tracename, 
   478   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultEnqueueSinkWithContext():  Unable to hook \""    479                  << tracename << 
"\"");
   482 template <
typename T> 
void   487   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultDropSinkWithoutContext():  Unable to hook \""    488                  << tracename << 
"\"");
   491 template <
typename T> 
void   495   std::string tracename, 
   500   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultDropSinkWithContext():  Unable to hook \""    501                  << tracename << 
"\"");
   504 template <
typename T> 
void   509   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultDequeueSinkWithoutContext():  Unable to hook \""    510                  << tracename << 
"\"");
   513 template <
typename T> 
void   517   std::string tracename, 
   522   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultDequeueSinkWithContext():  Unable to hook \""    523                  << tracename << 
"\"");
   526 template <
typename T> 
void   531   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultReceiveSinkWithoutContext():  Unable to hook \""    532                  << tracename << 
"\"");
   535 template <
typename T> 
void   539   std::string tracename, 
   544   NS_ASSERT_MSG (result == 
true, 
"AsciiTraceHelper::HookDefaultReceiveSinkWithContext():  Unable to hook \""    545                  << tracename << 
"\"");
   594   void EnablePcap (std::string prefix, std::string ndName, 
bool promiscuous = 
false, 
bool explicitFilename = 
false);
   625   void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, 
bool promiscuous = 
false);
   634   void EnablePcapAll (std::string prefix, 
bool promiscuous = 
false);
   680                                     bool explicitFilename) = 0;
   708   void EnableAscii (std::string prefix, std::string ndName, 
bool explicitFilename = 
false);
   786   void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid, 
bool explicitFilename);
   820                         bool explicitFilename);
 
Base class providing common user-level ascii trace operations for helpers representing net devices...
Manage ASCII trace files for device models. 
Smart pointer class similar to boost::intrusive_ptr. 
static void DefaultEnqueueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Enqueue default trace sink. 
void EnableAsciiImpl(Ptr< OutputStreamWrapper > stream, std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename)
Enable ascii trace output on the device specified by a global node-id (of a previously created node) ...
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 con...
NS_ASSERT_MSG(false, "Ipv4AddressGenerator::MaskToIndex(): Impossible")
Manage pcap files for device models. 
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Make Callbacks with one bound argument. 
Base class providing common user-level pcap operations for helpers representing net devices...
static void DefaultDropSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Drop default trace sink. 
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 cont...
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. ...
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 ...
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...
Ptr< PcapFileWrapper > CreateFile(std::string filename, std::ios::openmode filemode, DataLinkType dataLinkType, uint32_t snapLen=std::numeric_limits< uint32_t >::max(), int32_t tzCorrection=0)
Create and initialize a pcap file. 
static void DefaultReceiveSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Receive default trace sink. 
static void SinkWithHeader(Ptr< PcapFileWrapper > file, const Header &header, Ptr< const Packet > p)
This trace sink passes a header separately from the packet to prevent creating a new packet (for perf...
DataLinkType
This enumeration holds the data link types that will be written to the pcap file. ...
std::string GetFilenameFromDevice(std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true)
Let the pcap helper figure out a reasonable filename to use for a pcap file associated with a device...
void EnablePcapAll(std::string prefix, bool promiscuous=false)
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created ...
holds a vector of ns3::NetDevice pointers 
static void DefaultEnqueueSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Enqueue default trace sink. 
std::string GetFilenameFromInterfacePair(std::string prefix, Ptr< Object > object, uint32_t interface, bool useObjectNames=true)
Let the pcap helper figure out a reasonable filename to use for the pcap file associated with a node...
static void DefaultDequeueSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Dequeue default trace sink. 
AsciiTraceHelperForDevice()
Construct an AsciiTraceHelperForDevice. 
static void DefaultReceiveSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Receive default trace sink. 
static void DefaultSink(Ptr< PcapFileWrapper > file, Ptr< const Packet > p)
The basic default trace sink. 
static void DefaultDequeueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Dequeue default trace sink. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
keep track of a set of node pointers. 
virtual void EnablePcapInternal(std::string prefix, Ptr< NetDevice > nd, bool promiscuous, bool explicitFilename)=0
Enable pcap output the indicated net device. 
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 cont...
AsciiTraceHelper()
Create an ascii trace helper. 
static void DefaultDropSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Drop default trace sink. 
PcapHelper()
Create a pcap helper. 
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 ...
void EnableAscii(std::string prefix, Ptr< NetDevice > nd, bool explicitFilename=false)
Enable ascii trace output on the indicated net 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...
virtual void EnableAsciiInternal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename)=0
Enable ascii trace output on the indicated net device. 
void EnableAsciiAll(std::string prefix)
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes c...
PcapHelperForDevice()
Construct a PcapHelperForDevice. 
void EnablePcap(std::string prefix, Ptr< NetDevice > nd, bool promiscuous=false, bool explicitFilename=false)
Enable pcap output the indicated net device. 
void HookDefaultSink(Ptr< T > object, std::string traceName, Ptr< PcapFileWrapper > file)
Hook a trace source to the default trace sink. 
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 cont...
~AsciiTraceHelper()
Destroy an ascii trace helper. 
virtual ~PcapHelperForDevice()
Destroy a PcapHelperForDevice. 
~PcapHelper()
Destroy a pcap helper. 
virtual ~AsciiTraceHelperForDevice()
Destroy an AsciiTraceHelperForDevice. 
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...
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 ...