Mercurial > libervia-backend
comparison src/bridge/DBus.py @ 627:d207c2186519
core, bridge, jp, quick_frontend: SàT stop more gracefully if bridge can't be initialised:
- new BridgeInitError and BridgeExceptionNoService are in core.exceptions
- D-Bus NotSupported is catched in bridge, and launch a BridgeInitError
- BridgeInitError stop SàT core, jp, and quick_frontends with an explanation message.
fix bug 27
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 21 Jun 2013 02:00:37 +0200 |
parents | 84a6e83157c2 |
children | ca2cae6b2c6d |
comparison
equal
deleted
inserted
replaced
626:190ccc6dc36c | 627:d207c2186519 |
---|---|
22 import dbus.service | 22 import dbus.service |
23 import dbus.mainloop.glib | 23 import dbus.mainloop.glib |
24 import inspect | 24 import inspect |
25 from logging import debug, info, error | 25 from logging import debug, info, error |
26 from twisted.internet.defer import Deferred | 26 from twisted.internet.defer import Deferred |
27 from sat.core.exceptions import BridgeInitError | |
27 | 28 |
28 const_INT_PREFIX = "org.goffi.SAT" # Interface prefix | 29 const_INT_PREFIX = "org.goffi.SAT" # Interface prefix |
29 const_ERROR_PREFIX = const_INT_PREFIX + ".error" | 30 const_ERROR_PREFIX = const_INT_PREFIX + ".error" |
30 const_OBJ_PATH = '/org/goffi/SAT/bridge' | 31 const_OBJ_PATH = '/org/goffi/SAT/bridge' |
31 const_CORE_SUFFIX = ".core" | 32 const_CORE_SUFFIX = ".core" |
504 class DBusBridge(Bridge): | 505 class DBusBridge(Bridge): |
505 def __init__(self): | 506 def __init__(self): |
506 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) | 507 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
507 Bridge.__init__(self) | 508 Bridge.__init__(self) |
508 info("Init DBus...") | 509 info("Init DBus...") |
509 self.session_bus = dbus.SessionBus() | 510 try: |
511 self.session_bus = dbus.SessionBus() | |
512 except dbus.DBusException as e: | |
513 if e._dbus_error_name == 'org.freedesktop.DBus.Error.NotSupported': | |
514 print u"D-Bus is not launched, please see README to see instructions on how to launch it" | |
515 raise BridgeInitError | |
510 self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) | 516 self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) |
511 self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) | 517 self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) |
512 | 518 |
513 def actionResult(self, answer_type, id, data, profile): | 519 def actionResult(self, answer_type, id, data, profile): |
514 self.dbus_bridge.actionResult(answer_type, id, data, profile) | 520 self.dbus_bridge.actionResult(answer_type, id, data, profile) |