def set(self, guid, name, value, time = TIME_NOW):
super(TestbedController, self).set(guid, name, value, time)
# TODO: take on account schedule time for the task
+ factory_id = self._create[guid]
+ factory = self._factories[factory_id]
+ if factory.box_attributes.is_attribute_design_only(name):
+ return
element = self._elements.get(guid)
if element:
setattr(element, name, value)
self._condition = threading.Condition()
self._simulator_thread = threading.Thread(target = self._simulator_run,
args = [self._condition])
- self._simulator_thread.setDaemon(True)
self._simulator_thread.start()
def stop(self, time = TIME_NOW):
super(TestbedController, self).stop(time)
- # BUG!!!! RealtimeSimulatorImpl never stops simulation with Stop()!!!
- self.ns3.Simulator.Stop()
- #self._stop_simulation(time)
+ #self.ns3.Simulator.Stop()
+ self._stop_simulation(time)
def set(self, guid, name, value, time = TIME_NOW):
super(TestbedController, self).set(guid, name, value, time)
element.Cleanup()
self._elements.clear()
if self.ns3:
- self.ns3.Simulator.Stop()
- ##################################################
- # BUG!!!! RealtimeSimulatorImpl never stops simulation with Stop()!!!
- # self._stop_simulation("0s")
- # if self._simulator_thread:
- # print "Joining thread"
- # self._simulator_thread.join()
- #################################################
+ #self.ns3.Simulator.Stop()
+ self._stop_simulation("0s")
+ if self._simulator_thread:
+ self._simulator_thread.join()
self.ns3.Simulator.Destroy()
self._ns3 = None
sys.stdout.flush()