applied the except and raise fixers to the master branch to close the gap with py3
[nepi.git] / src / nepi / resources / ns3 / ns3fdnetdevice.py
index 3e42d23..8ba29df 100644 (file)
@@ -3,9 +3,8 @@
 #    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
@@ -26,7 +25,7 @@ class NS3BaseFdNetDevice(NS3BaseNetDevice):
 
     @property
     def _rms_to_wait(self):
-        rms = set([self.node, self.node.ipv4])
+        rms = set([self.node])
         return rms
 
     def _configure_mac_address(self):
@@ -39,4 +38,21 @@ class NS3BaseFdNetDevice(NS3BaseNetDevice):
         if node and node.uuid not in self.connected:
             self.simulation.invoke(node.uuid, "AddDevice", self.uuid)
             self._connected.add(node.uuid)
+
+    def _instantiate_object(self):
+        """ just validate that the simulator is in real time
+        mode, otherwise it is not going to work
+        """
+
+        mode = self.simulation.get("simulatorImplementationType")
+        if mode != "ns3::RealtimeSimulatorImpl":
+            msg = "The simulation must run in real time!!"
+            self.error(msg)
+            raise RuntimeError(msg)
         
+        super(NS3BaseFdNetDevice, self)._instantiate_object()
+
+    def recv_fd(self):
+        address = self.simulation.invoke(self.uuid, "recvFD")
+        return address
+