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"
53 DLT_PRISM_HEADER = 119,
54 DLT_IEEE802_11_RADIO = 127
78 uint32_t interface,
bool useObjectNames =
true);
84 uint32_t dataLinkType, uint32_t snapLen = 65535, int32_t tzCorrection = 0);
94 template <
typename T>
void
98 object->TraceConnectWithoutContext (tracename.c_str (), MakeBoundCallback (&DefaultSink, file));
99 NS_ASSERT_MSG (result ==
true,
"PcapHelper::HookDefaultSink(): Unable to hook \"" << tracename <<
"\"");
133 uint32_t interface,
bool useObjectNames =
true);
156 std::ios::openmode filemode = std::ios::out);
162 template <
typename T>
169 template <
typename T>
177 template <
typename T>
184 template <
typename T>
192 template <
typename T>
199 template <
typename T>
207 template <
typename T>
214 template <
typename T>
231 template <
typename T>
void
235 object->TraceConnectWithoutContext (tracename, MakeBoundCallback (&DefaultEnqueueSinkWithoutContext, file));
236 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultEnqueueSinkWithoutContext(): Unable to hook \""
237 << tracename <<
"\"");
240 template <
typename T>
void
244 std::string tracename,
248 object->TraceConnect (tracename, context, MakeBoundCallback (&DefaultEnqueueSinkWithContext, stream));
249 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultEnqueueSinkWithContext(): Unable to hook \""
250 << tracename <<
"\"");
253 template <
typename T>
void
257 object->TraceConnectWithoutContext (tracename, MakeBoundCallback (&DefaultDropSinkWithoutContext, file));
258 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultDropSinkWithoutContext(): Unable to hook \""
259 << tracename <<
"\"");
262 template <
typename T>
void
266 std::string tracename,
270 object->TraceConnect (tracename, context, MakeBoundCallback (&DefaultDropSinkWithContext, stream));
271 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultDropSinkWithContext(): Unable to hook \""
272 << tracename <<
"\"");
275 template <
typename T>
void
279 object->TraceConnectWithoutContext (tracename, MakeBoundCallback (&DefaultDequeueSinkWithoutContext, file));
280 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultDequeueSinkWithoutContext(): Unable to hook \""
281 << tracename <<
"\"");
284 template <
typename T>
void
288 std::string tracename,
292 object->TraceConnect (tracename, context, MakeBoundCallback (&DefaultDequeueSinkWithContext, stream));
293 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultDequeueSinkWithContext(): Unable to hook \""
294 << tracename <<
"\"");
297 template <
typename T>
void
301 object->TraceConnectWithoutContext (tracename, MakeBoundCallback (&DefaultReceiveSinkWithoutContext, file));
302 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultReceiveSinkWithoutContext(): Unable to hook \""
303 << tracename <<
"\"");
306 template <
typename T>
void
310 std::string tracename,
314 object->TraceConnect (tracename, context, MakeBoundCallback (&DefaultReceiveSinkWithContext, stream));
315 NS_ASSERT_MSG (result ==
true,
"AsciiTraceHelper::HookDefaultReceiveSinkWithContext(): Unable to hook \""
316 << tracename <<
"\"");
366 void EnablePcap (std::string prefix, std::string ndName,
bool promiscuous =
false,
bool explicitFilename =
false);
397 void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid,
bool promiscuous =
false);
406 void EnablePcapAll (std::string prefix,
bool promiscuous =
false);
453 bool explicitFilename) = 0;
481 void EnableAscii (std::string prefix, std::string ndName,
bool explicitFilename =
false);
559 void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid,
bool explicitFilename);
582 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
Ptr< PcapFileWrapper > CreateFile(std::string filename, std::ios::openmode filemode, uint32_t dataLinkType, uint32_t snapLen=65535, int32_t tzCorrection=0)
Create and initialize a pcap file.
void EnableAsciiImpl(Ptr< OutputStreamWrapper > stream, std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename)
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...
Manage pcap files for device models.
Base class providing common user-level pcap operations for helpers representing net devices...
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...
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
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...
AsciiTraceHelperForDevice()
Construct an AsciiTraceHelperForDevice.
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.
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 ...
#define NS_ASSERT_MSG(condition, message)
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 ...