This function will attempt to find all trace sources which match the input path and will then connect the input callback to them.
void ns3::Config::Connect (std::string path,const CallbackBase &cb )
This function will attempt to find all trace sources which match the input path and will then connect the input callback to them in such a way that the callback will receive an extra context string upon trace event notification.
以一个csma网络 ping的例子来解释,见: /src/csma/examples/csma-ping.cc
V4Ping : http://www.nsnam.org/doxygen/classns3_1_1_v4_ping.html#af207b6dc0ed793798083c34a1c388770
TraceSources defined for this type:
This object is accessible through the following paths with Config::Set and Config::Connect:
PacketSink :http://www.nsnam.org/doxygen/classns3_1_1_packet_sink.html
TraceSources defined for this type:
This object is accessible through the following paths with Config::Set and Config::Connect:
static void SinkRx (Ptr<const Packet> p, const Address &ad)
{
std::cout << *p << std::endl;
}
static void PingRtt (std::string context, Time rtt)
{
std::cout << context << " " << rtt << std::endl;
}
...
int main (int argc, char * argv[])
{
...
// then, print what the packet sink receives.
Config::ConnectWithoutContext ("/NodeList/3/ApplicationList/0/$ns3::PacketSink/Rx",
MakeCallback (&SinkRx));
// finally, print the ping rtts.
Config::Connect ("/NodeList/*/ApplicationList/*/$ns3::V4Ping/Rtt",
MakeCallback (&PingRtt));
...
}
执行: gpf@guopengfei:~/ns-312/ns-allinone-3.12.1/ns-3.12.1$ ./waf --run src/csma/examples/csma-ping
结果:
Waf: Entering directory `/home/gpf/ns-312/ns-allinone-3.12.1/ns-3.12.1/build'
Waf: Leaving directory `/home/gpf/ns-312/ns-allinone-3.12.1/ns-3.12.1/build'
'build' finished successfully (5.522s)
ns3::Ipv4Header (tos 0x0 ttl 64 id 0 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +12766594.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +25762594.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +38792594.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 2 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 3 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +4352998.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +8709998.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +13800998.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 5 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +4352998.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +9059998.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +13493998.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 7 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 8 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 9 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 10 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 11 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 12 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 13 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 14 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 15 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 16 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)