def run_agents(self):
self.agent.run_and_catch_exc()
if self.agent.__class__.run != Agent.run:
# the run() method has been overridden - agent will run on his own
# then quit
self.iface.unregister(self.agent_id)
return
log.info("Entering agent loop")
self.loop = gobject.MainLoop()
try:
self.loop.run()
except (KeyboardInterrupt, SystemExit):
for args in self.agent.held_locks:
self.agent.unlock(*args)
self.loop.quit()
# Clean up signals - useful for tests, where one process runs several
# agents successively
self.bus.remove_signal_receiver(self.broadcast_wrapper,
dbus_interface="com.airbus.rebus.bus",
signal_name="new_descriptor")
self.bus.remove_signal_receiver(self.targeted_wrapper,
dbus_interface="com.airbus.rebus.bus",
signal_name="targeted_descriptor")
self.bus.remove_signal_receiver(self.bus_exit_handler,
dbus_interface="com.airbus.rebus.bus",
signal_name="bus_exit")
self.iface.unregister(self.agent_id)
self.agent.save_internal_state()
# DBus specific functions
评论列表
文章目录