# Copyright (C) 2014 INRIA
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation;
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
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"
if not nodes:
msg = "Device not connected to node"
self.error(msg)
- raise RuntimeError, msg
+ raise RuntimeError(msg)
return nodes[0]
if not channels:
msg = "Device not connected to channel"
self.error(msg)
- raise RuntimeError, msg
+ raise RuntimeError(msg)
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