# 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()