Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike C. Fletcher <mcfletch@raistlin.(none)>2007-04-22 04:31:32 (GMT)
committer Mike C. Fletcher <mcfletch@raistlin.(none)>2007-04-22 04:31:32 (GMT)
commit96ab3a10fe6d520b39d9ba00c3924a640552e0af (patch)
tree2836f55c91688808ed98fb45eaafa8dc5371b977
parenta7af5b06cd66eabbb6f412f0debc57ad89de06cb (diff)
More code to handle service-offline cases and log messages to tell the
user/admin what's going on.
-rw-r--r--sugar/presence/presenceservice.py56
1 files changed, 43 insertions, 13 deletions
diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py
index 3d731b6..7592cdd 100644
--- a/sugar/presence/presenceservice.py
+++ b/sugar/presence/presenceservice.py
@@ -294,11 +294,19 @@ class PresenceService(gobject.GObject):
returns list of Activity objects for all object paths
the service reports exist (using GetActivities)
"""
- resp = self._ps.GetActivities()
- acts = []
- for item in resp:
- acts.append(self._new_object(item))
- return acts
+ try:
+ resp = self._ps.GetActivities()
+ except dbus.exceptions.DBusException, err:
+ logging.warn(
+ """Unable to retrieve activity list from presence service: %s""",
+ err
+ )
+ return []
+ else:
+ acts = []
+ for item in resp:
+ acts.append(self._new_object(item))
+ return acts
def get_activity(self, activity_id):
"""Retrieve single Activity object for the given unique id
@@ -310,7 +318,12 @@ class PresenceService(gobject.GObject):
"""
try:
act_op = self._ps.GetActivityById(activity_id)
- except dbus.exceptions.DBusException:
+ except dbus.exceptions.DBusException, err:
+ logging.warn(
+ """Unable to retrieve activity handle for %r from presence service: %s""",
+ activity_id,
+ err
+ )
return None
return self._new_object(act_op)
@@ -320,11 +333,19 @@ class PresenceService(gobject.GObject):
returns list of Buddy objects for all object paths
the service reports exist (using GetBuddies)
"""
- resp = self._ps.GetBuddies()
- buddies = []
- for item in resp:
- buddies.append(self._new_object(item))
- return buddies
+ try:
+ resp = self._ps.GetBuddies()
+ except dbus.exceptions.DBusException, err:
+ logging.warn(
+ """Unable to retrieve buddy-list from presence service: %s""",
+ err
+ )
+ return []
+ else:
+ buddies = []
+ for item in resp:
+ buddies.append(self._new_object(item))
+ return buddies
def get_buddy(self, key):
"""Retrieve single Buddy object for the given public key
@@ -337,7 +358,12 @@ class PresenceService(gobject.GObject):
"""
try:
buddy_op = self._ps.GetBuddyByPublicKey(dbus.ByteArray(key))
- except dbus.exceptions.DBusException:
+ except dbus.exceptions.DBusException, err:
+ logging.warn(
+ """Unable to retrieve buddy handle for %r from presence service: %s""",
+ key,
+ err
+ )
return None
return self._new_object(buddy_op)
@@ -350,7 +376,11 @@ class PresenceService(gobject.GObject):
"""
try:
owner_op = self._ps.GetOwner()
- except dbus.exceptions.DBusException:
+ except dbus.exceptions.DBusException, err:
+ logging.warn(
+ """Unable to retrieve local user/owner from presence service: %s""",
+ err
+ )
return None
return self._new_object(owner_op)