Fix shutdown to use the proper stop procedure (schedule the stop event thread-safely...
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Wed, 3 Aug 2011 16:33:58 +0000 (18:33 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Wed, 3 Aug 2011 16:33:58 +0000 (18:33 +0200)
src/nepi/testbeds/ns3/execute.py

index 15acf13..ce93a26 100644 (file)
@@ -164,23 +164,17 @@ class TestbedController(testbed_impl.TestbedController):
                 # graceful shutdown of locally-implemented objects
                 element.Cleanup()
         if self.ns3:
-            self.ns3.Simulator.Stop()
+            if not self.ns3.Simulator.IsFinished():
+                self.stop()
             
-            # Wait for it to stop, with a 30s timeout
-            for i in xrange(300):
-                if self.ns3.Simulator.IsFinished():
-                    break
-                time.sleep(0.1)
-            #self._stop_simulation("0s")
-        
-        self._elements.clear()
-        
-        if self.ns3:
             # TODO!!!! SHOULD WAIT UNTIL THE THREAD FINISHES
-            #   if self._simulator_thread:
-            #       self._simulator_thread.join()
+            if self._simulator_thread:
+                self._simulator_thread.join()
+            
             self.ns3.Simulator.Destroy()
         
+        self._elements.clear()
+        
         self._ns3 = None
         sys.stdout.flush()
         sys.stderr.flush()