Mercurial > libervia-backend
comparison src/bridge/bridge_constructor/dbus_core_template.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 | 1def5b7edf9f |
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" |
202 class DBusBridge(Bridge): | 203 class DBusBridge(Bridge): |
203 def __init__(self): | 204 def __init__(self): |
204 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) | 205 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
205 Bridge.__init__(self) | 206 Bridge.__init__(self) |
206 info("Init DBus...") | 207 info("Init DBus...") |
207 self.session_bus = dbus.SessionBus() | 208 try: |
209 self.session_bus = dbus.SessionBus() | |
210 except dbus.DBusException as e: | |
211 if e._dbus_error_name == 'org.freedesktop.DBus.Error.NotSupported': | |
212 print u"D-Bus is not launched, please see README to see instructions on how to launch it" | |
213 raise BridgeInitError | |
208 self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) | 214 self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) |
209 self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) | 215 self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) |
210 | 216 |
211 ##DIRECT_CALLS## | 217 ##DIRECT_CALLS## |
212 def register(self, name, callback): | 218 def register(self, name, callback): |