import ipaddr
-# TODO: Validate that device must be connected to queue!! If not a segmentation fault occurs
-
@clsinit_copy
class NS3BaseNetDevice(NS3Base):
_rtype = "abstract::ns3::NetDevice"
return channels[0]
+ @property
+ def queue(self):
+ from nepi.resources.ns3.ns3queue import NS3BaseQueue
+ queue = self.get_connected(NS3BaseQueue.get_rtype())
+
+ if not queue:
+ msg = "Device not connected to queue"
+ self.error(msg)
+ raise RuntimeError, msg
+
+ return queue[0]
+
@property
def ascii_helper_uuid(self):
if not self._ascii_helper_uuid:
classname = "WimaxHelper"
elif rtype == "ns3::WifiNetDevice":
classname = "YansWifiPhyHelper"
+ elif rtype == "ns3::FdNetDevice":
+ classname = "FdNetDeviceHelper"
self._device_helper_uuid = self.simulation.create(classname)
@property
def _rms_to_wait(self):
- rms = set()
-
- node = self.node
- rms.add(node)
-
- ipv4 = node.ipv4
- if node.ipv4:
- rms.add(ipv4)
-
- rms.add(self.channel)
+ rms = set([self.node, self.channel])
return rms
def _configure_object(self):
if channel and channel.uuid not in self.connected:
self.simulation.invoke(self.uuid, "Attach", channel.uuid)
self._connected.add(channel.uuid)
+
+ # Verify that the device has a queue. If no queue is added a segfault
+ # error occurs
+ queue = self.queue