Mercurial > libervia-backend
comparison frontends/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 |
---|---|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 | 19 |
20 from bridge_frontend import BridgeFrontend | 20 from bridge_frontend import BridgeFrontend |
21 import dbus | 21 import dbus |
22 from logging import debug, error | 22 from logging import debug, error |
23 from sat.core.exceptions import BridgeExceptionNoService, BridgeInitError | |
23 | 24 |
24 from dbus.mainloop.glib import DBusGMainLoop | 25 from dbus.mainloop.glib import DBusGMainLoop |
25 DBusGMainLoop(set_as_default=True) | 26 DBusGMainLoop(set_as_default=True) |
26 | 27 |
27 const_INT_PREFIX = "org.goffi.SAT" # Interface prefix | 28 const_INT_PREFIX = "org.goffi.SAT" # Interface prefix |
28 const_ERROR_PREFIX = const_INT_PREFIX + ".error" | 29 const_ERROR_PREFIX = const_INT_PREFIX + ".error" |
29 const_OBJ_PATH = '/org/goffi/SAT/bridge' | 30 const_OBJ_PATH = '/org/goffi/SAT/bridge' |
30 const_CORE_SUFFIX = ".core" | 31 const_CORE_SUFFIX = ".core" |
31 const_PLUGIN_SUFFIX = ".plugin" | 32 const_PLUGIN_SUFFIX = ".plugin" |
32 | |
33 | |
34 class BridgeExceptionNoService(Exception): | |
35 pass | |
36 | 33 |
37 | 34 |
38 class DBusBridgeFrontend(BridgeFrontend): | 35 class DBusBridgeFrontend(BridgeFrontend): |
39 def __init__(self): | 36 def __init__(self): |
40 try: | 37 try: |
46 self.db_plugin_iface = dbus.Interface(self.db_object, | 43 self.db_plugin_iface = dbus.Interface(self.db_object, |
47 dbus_interface=const_INT_PREFIX + const_PLUGIN_SUFFIX) | 44 dbus_interface=const_INT_PREFIX + const_PLUGIN_SUFFIX) |
48 except dbus.exceptions.DBusException, e: | 45 except dbus.exceptions.DBusException, e: |
49 if e._dbus_error_name == 'org.freedesktop.DBus.Error.ServiceUnknown': | 46 if e._dbus_error_name == 'org.freedesktop.DBus.Error.ServiceUnknown': |
50 raise BridgeExceptionNoService | 47 raise BridgeExceptionNoService |
48 elif e._dbus_error_name == 'org.freedesktop.DBus.Error.NotSupported': | |
49 print u"D-Bus is not launched, please see README to see instructions on how to launch it" | |
50 raise BridgeInitError | |
51 else: | 51 else: |
52 raise e | 52 raise e |
53 #props = self.db_core_iface.getProperties() | 53 #props = self.db_core_iface.getProperties() |
54 | 54 |
55 def register(self, functionName, handler, iface="core"): | 55 def register(self, functionName, handler, iface="core"): |