src/helper/emu-helper.cc
changeset 4263 fec2f830d015
parent 4147 5d8530130930
child 4264 9d2e96c4e6e4
equal deleted inserted replaced
4244:7c98934dcccd 4263:fec2f830d015
    76   Ptr<PcapWriter> pcap = Create<PcapWriter> ();
    76   Ptr<PcapWriter> pcap = Create<PcapWriter> ();
    77   pcap->Open (oss.str ());
    77   pcap->Open (oss.str ());
    78   pcap->WriteEthernetHeader ();
    78   pcap->WriteEthernetHeader ();
    79 
    79 
    80   oss.str ("");
    80   oss.str ("");
    81   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
    81   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/Sniffer";
    82     "/$ns3::EmuNetDevice/Rx";
    82   Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&EmuHelper::SniffEvent, pcap));
    83   Config::ConnectWithoutContext (oss.str (), 
       
    84     MakeBoundCallback (&EmuHelper::RxEvent, pcap));
       
    85 
       
    86   oss.str ("");
       
    87   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
       
    88     "/$ns3::EmuNetDevice/TxQueue/Enqueue";
       
    89   Config::ConnectWithoutContext (oss.str (), 
       
    90     MakeBoundCallback (&EmuHelper::EnqueueEvent, pcap));
       
    91 }
    83 }
    92 
    84 
    93   void 
    85   void 
    94 EmuHelper::EnablePcap (std::string filename, NetDeviceContainer d)
    86 EmuHelper::EnablePcap (std::string filename, NetDeviceContainer d)
    95 {
    87 {
   129 {
   121 {
   130   NS_LOG_FUNCTION (&os << nodeid << deviceid);
   122   NS_LOG_FUNCTION (&os << nodeid << deviceid);
   131   Packet::EnablePrinting ();
   123   Packet::EnablePrinting ();
   132   std::ostringstream oss;
   124   std::ostringstream oss;
   133 
   125 
   134   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
   126   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/MacRx";
   135     "/$ns3::EmuNetDevice/Rx";
   127   Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiRxEvent, &os));
   136   Config::Connect (oss.str (), 
   128 
   137     MakeBoundCallback (&EmuHelper::AsciiRxEvent, &os));
   129   oss.str ("");
   138 
   130   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Enqueue";
   139   oss.str ("");
   131   Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiEnqueueEvent, &os));
   140   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
   132 
   141     "/$ns3::EmuNetDevice/TxQueue/Enqueue";
   133   oss.str ("");
   142   Config::Connect (oss.str (), 
   134   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Dequeue";
   143     MakeBoundCallback (&EmuHelper::AsciiEnqueueEvent, &os));
   135   Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiDequeueEvent, &os));
   144 
   136 
   145   oss.str ("");
   137   oss.str ("");
   146   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
   138   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Drop";
   147     "/$ns3::EmuNetDevice/TxQueue/Dequeue";
   139   Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiDropEvent, &os));
   148   Config::Connect (oss.str (), 
       
   149     MakeBoundCallback (&EmuHelper::AsciiDequeueEvent, &os));
       
   150 
       
   151   oss.str ("");
       
   152   oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << 
       
   153     "/$ns3::EmuNetDevice/TxQueue/Drop";
       
   154   Config::Connect (oss.str (), 
       
   155     MakeBoundCallback (&EmuHelper::AsciiDropEvent, &os));
       
   156 }
   140 }
   157 
   141 
   158   void 
   142   void 
   159 EmuHelper::EnableAscii (std::ostream &os, NetDeviceContainer d)
   143 EmuHelper::EnableAscii (std::ostream &os, NetDeviceContainer d)
   160 {
   144 {
   226 
   210 
   227   return device;
   211   return device;
   228 }
   212 }
   229 
   213 
   230   void 
   214   void 
   231 EmuHelper::EnqueueEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
   215 EmuHelper::SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
   232 {
   216 {
   233   NS_LOG_FUNCTION (writer << packet);
   217   NS_LOG_FUNCTION (writer << packet);
   234   writer->WritePacket (packet);
   218   writer->WritePacket (packet);
   235 }
   219 }
   236 
   220 
   237   void 
   221   void 
   238 EmuHelper::RxEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
       
   239 {
       
   240   NS_LOG_FUNCTION (writer << packet);
       
   241   writer->WritePacket (packet);
       
   242 }
       
   243 
       
   244   void 
       
   245 EmuHelper::AsciiEnqueueEvent (
   222 EmuHelper::AsciiEnqueueEvent (
   246   std::ostream *os, 
   223   std::ostream *os, 
   247   std::string path, 
   224   std::string path, 
   248   Ptr<const Packet> packet)
   225   Ptr<const Packet> packet)
   249 {
   226 {