src/helper/csma-helper.cc
changeset 4140 6bbf05bf4826
parent 3848 affd0834debc
child 4147 5d8530130930
equal deleted inserted replaced
4139:d45e62c78504 4140:6bbf05bf4826
    24 #include "ns3/csma-net-device.h"
    24 #include "ns3/csma-net-device.h"
    25 #include "ns3/csma-channel.h"
    25 #include "ns3/csma-channel.h"
    26 #include "ns3/pcap-writer.h"
    26 #include "ns3/pcap-writer.h"
    27 #include "ns3/config.h"
    27 #include "ns3/config.h"
    28 #include "ns3/packet.h"
    28 #include "ns3/packet.h"
       
    29 #include "ns3/object-names.h"
    29 #include <string>
    30 #include <string>
    30 
    31 
    31 namespace ns3 {
    32 namespace ns3 {
    32 
    33 
    33 CsmaHelper::CsmaHelper ()
    34 CsmaHelper::CsmaHelper ()
   179   Ptr<CsmaChannel> channel = m_channelFactory.Create ()->GetObject<CsmaChannel> ();
   180   Ptr<CsmaChannel> channel = m_channelFactory.Create ()->GetObject<CsmaChannel> ();
   180   return Install (node, channel);
   181   return Install (node, channel);
   181 }
   182 }
   182 
   183 
   183 NetDeviceContainer
   184 NetDeviceContainer
       
   185 CsmaHelper::Install (std::string nodeName) const
       
   186 {
       
   187   Ptr<Node> node = Names::Find<Node> (nodeName);
       
   188   return Install (node);
       
   189 }
       
   190 
       
   191 NetDeviceContainer
   184 CsmaHelper::Install (Ptr<Node> node, Ptr<CsmaChannel> channel) const
   192 CsmaHelper::Install (Ptr<Node> node, Ptr<CsmaChannel> channel) const
   185 {
   193 {
       
   194   return NetDeviceContainer (InstallPriv (node, channel));
       
   195 }
       
   196 
       
   197 NetDeviceContainer
       
   198 CsmaHelper::Install (Ptr<Node> node, std::string channelName) const
       
   199 {
       
   200   Ptr<CsmaChannel> channel = Names::Find<CsmaChannel> (channelName);
       
   201   return NetDeviceContainer (InstallPriv (node, channel));
       
   202 }
       
   203 
       
   204 NetDeviceContainer
       
   205 CsmaHelper::Install (std::string nodeName, Ptr<CsmaChannel> channel) const
       
   206 {
       
   207   Ptr<Node> node = Names::Find<Node> (nodeName);
       
   208   return NetDeviceContainer (InstallPriv (node, channel));
       
   209 }
       
   210 
       
   211 NetDeviceContainer
       
   212 CsmaHelper::Install (std::string nodeName, std::string channelName) const
       
   213 {
       
   214   Ptr<Node> node = Names::Find<Node> (nodeName);
       
   215   Ptr<CsmaChannel> channel = Names::Find<CsmaChannel> (channelName);
   186   return NetDeviceContainer (InstallPriv (node, channel));
   216   return NetDeviceContainer (InstallPriv (node, channel));
   187 }
   217 }
   188 
   218 
   189 NetDeviceContainer 
   219 NetDeviceContainer 
   190 CsmaHelper::Install (const NodeContainer &c) const
   220 CsmaHelper::Install (const NodeContainer &c) const
   203     {
   233     {
   204       devs.Add (InstallPriv (*i, channel));
   234       devs.Add (InstallPriv (*i, channel));
   205     }
   235     }
   206 
   236 
   207   return devs;
   237   return devs;
       
   238 }
       
   239 
       
   240 NetDeviceContainer 
       
   241 CsmaHelper::Install (const NodeContainer &c, std::string channelName) const
       
   242 {
       
   243   Ptr<CsmaChannel> channel = Names::Find<CsmaChannel> (channelName);
       
   244   return Install (c, channel);
   208 }
   245 }
   209 
   246 
   210 Ptr<NetDevice>
   247 Ptr<NetDevice>
   211 CsmaHelper::InstallPriv (Ptr<Node> node, Ptr<CsmaChannel> channel) const
   248 CsmaHelper::InstallPriv (Ptr<Node> node, Ptr<CsmaChannel> channel) const
   212 {
   249 {
   232       spokeDevices.Add (nd.Get (1));
   269       spokeDevices.Add (nd.Get (1));
   233     }
   270     }
   234 }
   271 }
   235 
   272 
   236 void 
   273 void 
       
   274 CsmaHelper::InstallStar (std::string hubName, NodeContainer spokes, 
       
   275                          NetDeviceContainer& hubDevices, NetDeviceContainer& spokeDevices)
       
   276 {
       
   277   Ptr<Node> hub = Names::Find<Node> (hubName);
       
   278   InstallStar (hub, spokes, hubDevices, spokeDevices);
       
   279 }
       
   280 
       
   281 void 
   237 CsmaHelper::EnqueueEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
   282 CsmaHelper::EnqueueEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet)
   238 {
   283 {
   239   writer->WritePacket (packet);
   284   writer->WritePacket (packet);
   240 }
   285 }
   241 void 
   286 void