[gnome-games/sudoku-tube] Catch exceptions when get_object
- From: Zhang Sen <zhangsen src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-games/sudoku-tube] Catch exceptions when get_object
- Date: Tue, 11 Aug 2009 11:52:57 +0000 (UTC)
commit 8a6de65575f9e30234ed8624a954ccbe544d5e87
Author: Zhang Sen <zh jesse gmail com>
Date: Tue Aug 11 19:44:08 2009 +0800
Catch exceptions when get_object
Catch dbus.exceptions.DBusException: Connection is disconnected - unable to
make method call. Not sure how this happens.
gnome-sudoku/src/lib/main.py | 32 ++++++++++++++++++++++++--------
1 files changed, 24 insertions(+), 8 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 40215d3..eee7875 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -519,10 +519,11 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
self._tube[tp_tube.CHANNEL_INTERFACE].connect_to_signal(
'Closed', self._tube_closed_cb)
- myself = networking.Peer(bus, self._receiver_obj_path, self)
- self._peer = bus.get_object(object_path=self._initiator_obj_path)
+ if not self._negotiate_peer_proxy(bus):
+ return
+
self._peer.get_puzzle(
- dbus_interface="org.gnome.Sudoku.view",
+ dbus_interface=networking.view_interface,
reply_handler=self._got_remote_puzzle_cb,
error_handler=error_cb)
@@ -532,7 +533,7 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
assert len(puzzle) == 81
self._open_game(game_selector.NewOrSavedGameSelector.NEW_GAME, puzzle)
self._init_side_view_display()
- self._negotiate_sideview(self._bus)
+ self._negotiate_sideview_proxy(self._bus)
def _tube_offered_cb(self, offer, bus, tube):
"""Called when the peer accepts our tube"""
@@ -545,11 +546,26 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
# string. FIXME
self._auto_open_game(check_saved=False)
- myself = networking.Peer(bus, self._initiator_obj_path, self)
- self._peer = bus.get_object(object_path=self._receiver_obj_path)
+ if not self._negotiate_peer_proxy(bus):
+ return
self._init_side_view_display()
- self._negotiate_sideview(bus)
+ self._negotiate_sideview_proxy(bus)
+
+ def _negotiate_peer_proxy(self, bus):
+ assert self._is_initiator is not None
+ if self._is_initiator:
+ me, peer = self._initiator_obj_path, self._receiver_obj_path
+ else:
+ me, peer = self._receiver_obj_path, self._initiator_obj_path
+
+ myself = networking.Peer(bus, me, self)
+ try:
+ self._peer = bus.get_object(object_path=peer)
+ except DBusException as err:
+ logger.error("Error when contacting with initiator: %s" % err)
+ return False
+ return True
def get_puzzle(self):
return self._puzzle.replace(" ", "") # delete all spaces
@@ -562,7 +578,7 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
if val:
self._side_grid_vew.set_value(x, y, val)
- def _negotiate_sideview(self, bus):
+ def _negotiate_sideview_proxy(self, bus):
receiver_view = self._view_obj_path + "/receiver"
initiator_view = self._view_obj_path + "/initiator"
if self._is_initiator:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]