-import signal
-import logging
-import gobject
-
-import dbus.glib
-import telepathy.utils as telepathy_utils
-
-import util.linux as linux_utils
-import util.go_utils as gobject_utils
-import constants
-import connection_manager
-
-
-IDLE_TIMEOUT = 5000
-
-
-def run_theonering(persist):
- linux_utils.set_process_name(constants.__app_name__)
-
- try:
- os.makedirs(constants._data_path_)
- except OSError, e:
- if e.errno != 17:
- raise
-
- @gobject_utils.async
- def quit():
- manager.quit()
- mainloop.quit()
-
- def timeout_cb():
- if len(manager._connections) == 0:
- logging.info('No connection received - quitting')
- quit()
- return False
-
- if persist:
- shutdown_callback = None
- else:
- gobject.timeout_add(IDLE_TIMEOUT, timeout_cb)
- shutdown_callback = quit
-
- signal.signal(signal.SIGTERM, quit)
-
- try:
- manager = connection_manager.TheOneRingConnectionManager(shutdown_func=shutdown_callback)
- except dbus.exceptions.NameExistsException:
- logging.warning('Failed to acquire bus name, connection manager already running?')
- sys.exit(1)
-
- mainloop = gobject.MainLoop(is_running=True)