sugar.presence.presenceservice, services/presence: Use named loggers.
This causes events in the log to be annotated with the module that emitted the message. Before: DEBUG - root: Starting up... After: DEBUG - s-p-s.server_plugin: Starting up... I've used a log domain of "sugar.presence..." for the client library and e.g. "s-p-s.activity" for the service internals.
This commit is contained in:
parent
ef00d72ca8
commit
4b26840333
@ -36,6 +36,8 @@ _PROP_LOCAL = "local"
|
|||||||
_PROP_JOINED = "joined"
|
_PROP_JOINED = "joined"
|
||||||
_PROP_CUSTOM_PROPS = "custom-props"
|
_PROP_CUSTOM_PROPS = "custom-props"
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s.activity')
|
||||||
|
|
||||||
class Activity(ExportedGObject):
|
class Activity(ExportedGObject):
|
||||||
"""Represents a potentially shareable activity on the network.
|
"""Represents a potentially shareable activity on the network.
|
||||||
"""
|
"""
|
||||||
@ -359,7 +361,7 @@ class Activity(ExportedGObject):
|
|||||||
Called by the _shared_cb and _joined_cb methods.
|
Called by the _shared_cb and _joined_cb methods.
|
||||||
"""
|
"""
|
||||||
if not text_channel:
|
if not text_channel:
|
||||||
logging.debug("Error sharing: text channel was None, shouldn't happen")
|
_logger.debug("Error sharing: text channel was None, shouldn't happen")
|
||||||
raise RuntimeError("Plugin returned invalid text channel")
|
raise RuntimeError("Plugin returned invalid text channel")
|
||||||
|
|
||||||
self._text_channel = text_channel
|
self._text_channel = text_channel
|
||||||
@ -379,14 +381,14 @@ class Activity(ExportedGObject):
|
|||||||
self._tp.disconnect(sigid)
|
self._tp.disconnect(sigid)
|
||||||
|
|
||||||
if exc:
|
if exc:
|
||||||
logging.debug("Share of activity %s failed: %s" % (self._id, exc))
|
_logger.debug("Share of activity %s failed: %s" % (self._id, exc))
|
||||||
async_err_cb(exc)
|
async_err_cb(exc)
|
||||||
else:
|
else:
|
||||||
self._handle_share_join(tp, text_channel)
|
self._handle_share_join(tp, text_channel)
|
||||||
self.send_properties()
|
self.send_properties()
|
||||||
owner.add_activity(self)
|
owner.add_activity(self)
|
||||||
async_cb(dbus.ObjectPath(self._object_path))
|
async_cb(dbus.ObjectPath(self._object_path))
|
||||||
logging.debug("Share of activity %s succeeded." % self._id)
|
_logger.debug("Share of activity %s succeeded." % self._id)
|
||||||
|
|
||||||
def _share(self, (async_cb, async_err_cb), owner):
|
def _share(self, (async_cb, async_err_cb), owner):
|
||||||
"""XXX - not documented yet
|
"""XXX - not documented yet
|
||||||
@ -394,13 +396,13 @@ class Activity(ExportedGObject):
|
|||||||
XXX - This method is called externally by the PresenceService despite the fact
|
XXX - This method is called externally by the PresenceService despite the fact
|
||||||
that this is supposed to be an internal method!
|
that this is supposed to be an internal method!
|
||||||
"""
|
"""
|
||||||
logging.debug("Starting share of activity %s" % self._id)
|
_logger.debug("Starting share of activity %s" % self._id)
|
||||||
if self._joined:
|
if self._joined:
|
||||||
async_err_cb(RuntimeError("Already shared activity %s" % self.props.id))
|
async_err_cb(RuntimeError("Already shared activity %s" % self.props.id))
|
||||||
return
|
return
|
||||||
sigid = self._tp.connect('activity-shared', self._shared_cb)
|
sigid = self._tp.connect('activity-shared', self._shared_cb)
|
||||||
self._tp.share_activity(self.props.id, (sigid, owner, async_cb, async_err_cb))
|
self._tp.share_activity(self.props.id, (sigid, owner, async_cb, async_err_cb))
|
||||||
logging.debug("done with share attempt %s" % self._id)
|
_logger.debug("done with share attempt %s" % self._id)
|
||||||
|
|
||||||
def _joined_cb(self, tp, activity_id, text_channel, exc, userdata):
|
def _joined_cb(self, tp, activity_id, text_channel, exc, userdata):
|
||||||
"""XXX - not documented yet
|
"""XXX - not documented yet
|
||||||
@ -506,7 +508,7 @@ class Activity(ExportedGObject):
|
|||||||
if type != self._type:
|
if type != self._type:
|
||||||
# Type can never be changed after first set
|
# Type can never be changed after first set
|
||||||
if self._type:
|
if self._type:
|
||||||
logging.debug("Activity type changed by network; this is illegal")
|
_logger.debug("Activity type changed by network; this is illegal")
|
||||||
else:
|
else:
|
||||||
self._type = type
|
self._type = type
|
||||||
changed = True
|
changed = True
|
||||||
|
@ -49,6 +49,9 @@ _PROP_VALID = "valid"
|
|||||||
# Will go away soon
|
# Will go away soon
|
||||||
_PROP_IP4_ADDRESS = "ip4-address"
|
_PROP_IP4_ADDRESS = "ip4-address"
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s.buddy')
|
||||||
|
|
||||||
|
|
||||||
class Buddy(ExportedGObject):
|
class Buddy(ExportedGObject):
|
||||||
"""Person on the network (tracks properties and shared activites)
|
"""Person on the network (tracks properties and shared activites)
|
||||||
|
|
||||||
@ -130,7 +133,7 @@ class Buddy(ExportedGObject):
|
|||||||
_ALLOWED_INIT_PROPS = [_PROP_NICK, _PROP_KEY, _PROP_ICON, _PROP_CURACT, _PROP_COLOR, _PROP_IP4_ADDRESS]
|
_ALLOWED_INIT_PROPS = [_PROP_NICK, _PROP_KEY, _PROP_ICON, _PROP_CURACT, _PROP_COLOR, _PROP_IP4_ADDRESS]
|
||||||
for (key, value) in kwargs.items():
|
for (key, value) in kwargs.items():
|
||||||
if key not in _ALLOWED_INIT_PROPS:
|
if key not in _ALLOWED_INIT_PROPS:
|
||||||
logging.debug("Invalid init property '%s'; ignoring..." % key)
|
_logger.debug("Invalid init property '%s'; ignoring..." % key)
|
||||||
del kwargs[key]
|
del kwargs[key]
|
||||||
|
|
||||||
# Set icon after superclass init, because it sends DBus and GObject
|
# Set icon after superclass init, because it sends DBus and GObject
|
||||||
@ -625,7 +628,7 @@ class TestOwner(GenericOwner):
|
|||||||
color = xocolor.XoColor().to_string()
|
color = xocolor.XoColor().to_string()
|
||||||
icon = _get_random_image()
|
icon = _get_random_image()
|
||||||
|
|
||||||
logging.debug("pubkey is %s" % pubkey)
|
_logger.debug("pubkey is %s" % pubkey)
|
||||||
GenericOwner.__init__(self, ps, bus_name, object_id, key=pubkey, nick=nick,
|
GenericOwner.__init__(self, ps, bus_name, object_id, key=pubkey, nick=nick,
|
||||||
color=color, icon=icon, registered=registered, key_hash=privkey_hash)
|
color=color, icon=icon, registered=registered, key_hash=privkey_hash)
|
||||||
|
|
||||||
@ -636,13 +639,13 @@ class TestOwner(GenericOwner):
|
|||||||
def _share_reply_cb(self, actid, object_path):
|
def _share_reply_cb(self, actid, object_path):
|
||||||
activity = self._ps.internal_get_activity(actid)
|
activity = self._ps.internal_get_activity(actid)
|
||||||
if not activity or not object_path:
|
if not activity or not object_path:
|
||||||
logging.debug("Couldn't find activity %s even though it was shared." % actid)
|
_logger.debug("Couldn't find activity %s even though it was shared." % actid)
|
||||||
return
|
return
|
||||||
logging.debug("Shared activity %s (%s)." % (actid, activity.props.name))
|
_logger.debug("Shared activity %s (%s)." % (actid, activity.props.name))
|
||||||
self._test_activities.append(activity)
|
self._test_activities.append(activity)
|
||||||
|
|
||||||
def _share_error_cb(self, actid, err):
|
def _share_error_cb(self, actid, err):
|
||||||
logging.debug("Error sharing activity %s: %s" % (actid, str(err)))
|
_logger.debug("Error sharing activity %s: %s" % (actid, str(err)))
|
||||||
|
|
||||||
def _ps_connection_status_cb(self, ps, connected):
|
def _ps_connection_status_cb(self, ps, connected):
|
||||||
if not connected:
|
if not connected:
|
||||||
@ -735,7 +738,7 @@ def _hash_private_key(self):
|
|||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
f.close()
|
f.close()
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
logging.error("Error reading private key: %s" % e)
|
_logger.error("Error reading private key: %s" % e)
|
||||||
return
|
return
|
||||||
|
|
||||||
key = ""
|
key = ""
|
||||||
@ -747,7 +750,7 @@ def _hash_private_key(self):
|
|||||||
continue
|
continue
|
||||||
key += l
|
key += l
|
||||||
if not len(key):
|
if not len(key):
|
||||||
logging.error("Error parsing public key.")
|
_logger.error("Error parsing public key.")
|
||||||
|
|
||||||
# hash it
|
# hash it
|
||||||
key_hash = util._sha_data(key)
|
key_hash = util._sha_data(key)
|
||||||
@ -759,7 +762,7 @@ def _extract_public_key(keyfile):
|
|||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
f.close()
|
f.close()
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
logging.error("Error reading public key: %s" % e)
|
_logger.error("Error reading public key: %s" % e)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Extract the public key
|
# Extract the public key
|
||||||
@ -772,7 +775,7 @@ def _extract_public_key(keyfile):
|
|||||||
key = l[len(magic):]
|
key = l[len(magic):]
|
||||||
break
|
break
|
||||||
if not len(key):
|
if not len(key):
|
||||||
logging.error("Error parsing public key.")
|
_logger.error("Error parsing public key.")
|
||||||
return None
|
return None
|
||||||
return key
|
return key
|
||||||
|
|
||||||
@ -784,7 +787,7 @@ def _extract_private_key(keyfile):
|
|||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
f.close()
|
f.close()
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
logging.error("Error reading private key: %s" % e)
|
_logger.error("Error reading private key: %s" % e)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
key = ""
|
key = ""
|
||||||
@ -796,7 +799,7 @@ def _extract_private_key(keyfile):
|
|||||||
continue
|
continue
|
||||||
key += l
|
key += l
|
||||||
if not len(key):
|
if not len(key):
|
||||||
logging.error("Error parsing private key.")
|
_logger.error("Error parsing private key.")
|
||||||
return None
|
return None
|
||||||
return key
|
return key
|
||||||
|
|
||||||
@ -821,7 +824,7 @@ def _get_new_keypair(num):
|
|||||||
print "Done."
|
print "Done."
|
||||||
pubkey = privkey = None
|
pubkey = privkey = None
|
||||||
if s != 0:
|
if s != 0:
|
||||||
logging.error("Could not generate key pair: %d (%s)" % (s, o))
|
_logger.error("Could not generate key pair: %d (%s)" % (s, o))
|
||||||
else:
|
else:
|
||||||
pubkey = _extract_public_key(pubkeyfile)
|
pubkey = _extract_public_key(pubkeyfile)
|
||||||
privkey = _extract_private_key(privkeyfile)
|
privkey = _extract_private_key(privkeyfile)
|
||||||
|
@ -40,6 +40,9 @@ _PRESENCE_INTERFACE = "org.laptop.Sugar.Presence"
|
|||||||
_PRESENCE_PATH = "/org/laptop/Sugar/Presence"
|
_PRESENCE_PATH = "/org/laptop/Sugar/Presence"
|
||||||
|
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s.presenceservice')
|
||||||
|
|
||||||
|
|
||||||
class NotFoundError(dbus.DBusException):
|
class NotFoundError(dbus.DBusException):
|
||||||
def __init__(self, msg):
|
def __init__(self, msg):
|
||||||
dbus.DBusException.__init__(self, msg)
|
dbus.DBusException.__init__(self, msg)
|
||||||
@ -101,7 +104,7 @@ class PresenceService(ExportedGObject):
|
|||||||
|
|
||||||
def _connection_disconnected_cb(self, foo=None):
|
def _connection_disconnected_cb(self, foo=None):
|
||||||
"""Log event when D-Bus kicks us off the bus for some reason"""
|
"""Log event when D-Bus kicks us off the bus for some reason"""
|
||||||
logging.debug("Disconnected from session bus!!!")
|
_logger.debug("Disconnected from session bus!!!")
|
||||||
|
|
||||||
def _server_status_cb(self, plugin, status, reason):
|
def _server_status_cb(self, plugin, status, reason):
|
||||||
# FIXME: figure out connection status when we have a salut plugin too
|
# FIXME: figure out connection status when we have a salut plugin too
|
||||||
@ -135,10 +138,10 @@ class PresenceService(ExportedGObject):
|
|||||||
def _buddy_validity_changed_cb(self, buddy, valid):
|
def _buddy_validity_changed_cb(self, buddy, valid):
|
||||||
if valid:
|
if valid:
|
||||||
self.BuddyAppeared(buddy.object_path())
|
self.BuddyAppeared(buddy.object_path())
|
||||||
logging.debug("New Buddy: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
_logger.debug("New Buddy: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
||||||
else:
|
else:
|
||||||
self.BuddyDisappeared(buddy.object_path())
|
self.BuddyDisappeared(buddy.object_path())
|
||||||
logging.debug("Buddy left: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
_logger.debug("Buddy left: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
||||||
|
|
||||||
def _contact_offline(self, tp, handle):
|
def _contact_offline(self, tp, handle):
|
||||||
if not self._handles_buddies[tp].has_key(handle):
|
if not self._handles_buddies[tp].has_key(handle):
|
||||||
@ -152,7 +155,7 @@ class PresenceService(ExportedGObject):
|
|||||||
if not buddy.handles:
|
if not buddy.handles:
|
||||||
if buddy.props.valid:
|
if buddy.props.valid:
|
||||||
self.BuddyDisappeared(buddy.object_path())
|
self.BuddyDisappeared(buddy.object_path())
|
||||||
logging.debug("Buddy left: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
_logger.debug("Buddy left: %s (%s)" % (buddy.props.nick, buddy.props.color))
|
||||||
self._buddies.pop(key)
|
self._buddies.pop(key)
|
||||||
|
|
||||||
def _get_next_object_id(self):
|
def _get_next_object_id(self):
|
||||||
@ -163,21 +166,21 @@ class PresenceService(ExportedGObject):
|
|||||||
def _avatar_updated(self, tp, handle, avatar):
|
def _avatar_updated(self, tp, handle, avatar):
|
||||||
buddy = self._handles_buddies[tp].get(handle)
|
buddy = self._handles_buddies[tp].get(handle)
|
||||||
if buddy and not buddy.props.owner:
|
if buddy and not buddy.props.owner:
|
||||||
logging.debug("Buddy %s icon updated" % buddy.props.nick)
|
_logger.debug("Buddy %s icon updated" % buddy.props.nick)
|
||||||
buddy.props.icon = avatar
|
buddy.props.icon = avatar
|
||||||
|
|
||||||
def _buddy_properties_changed(self, tp, handle, properties):
|
def _buddy_properties_changed(self, tp, handle, properties):
|
||||||
buddy = self._handles_buddies[tp].get(handle)
|
buddy = self._handles_buddies[tp].get(handle)
|
||||||
if buddy:
|
if buddy:
|
||||||
buddy.set_properties(properties)
|
buddy.set_properties(properties)
|
||||||
logging.debug("Buddy %s properties updated: %s" % (buddy.props.nick, properties.keys()))
|
_logger.debug("Buddy %s properties updated: %s" % (buddy.props.nick, properties.keys()))
|
||||||
|
|
||||||
def _new_activity(self, activity_id, tp):
|
def _new_activity(self, activity_id, tp):
|
||||||
try:
|
try:
|
||||||
objid = self._get_next_object_id()
|
objid = self._get_next_object_id()
|
||||||
activity = Activity(self._bus_name, objid, tp, id=activity_id)
|
activity = Activity(self._bus_name, objid, tp, id=activity_id)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logging.debug("Invalid activity: %s" % e)
|
_logger.debug("Invalid activity: %s" % e)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
activity.connect("validity-changed", self._activity_validity_changed_cb)
|
activity.connect("validity-changed", self._activity_validity_changed_cb)
|
||||||
@ -185,7 +188,7 @@ class PresenceService(ExportedGObject):
|
|||||||
return activity
|
return activity
|
||||||
|
|
||||||
def _remove_activity(self, activity):
|
def _remove_activity(self, activity):
|
||||||
logging.debug("remove activity %s" % activity.props.id)
|
_logger.debug("remove activity %s" % activity.props.id)
|
||||||
|
|
||||||
self.ActivityDisappeared(activity.object_path())
|
self.ActivityDisappeared(activity.object_path())
|
||||||
del self._activities[activity.props.id]
|
del self._activities[activity.props.id]
|
||||||
@ -194,7 +197,7 @@ class PresenceService(ExportedGObject):
|
|||||||
acts = []
|
acts = []
|
||||||
for act in activities:
|
for act in activities:
|
||||||
acts.append(str(act))
|
acts.append(str(act))
|
||||||
logging.debug("Handle %s activities changed: %s" % (contact_handle, acts))
|
_logger.debug("Handle %s activities changed: %s" % (contact_handle, acts))
|
||||||
buddies = self._handles_buddies[tp]
|
buddies = self._handles_buddies[tp]
|
||||||
buddy = buddies.get(contact_handle)
|
buddy = buddies.get(contact_handle)
|
||||||
|
|
||||||
@ -202,7 +205,7 @@ class PresenceService(ExportedGObject):
|
|||||||
# We don't know this buddy
|
# We don't know this buddy
|
||||||
# FIXME: What should we do here?
|
# FIXME: What should we do here?
|
||||||
# FIXME: Do we need to check if the buddy is valid or something?
|
# FIXME: Do we need to check if the buddy is valid or something?
|
||||||
logging.debug("contact_activities_changed: buddy unknown")
|
_logger.debug("contact_activities_changed: buddy unknown")
|
||||||
return
|
return
|
||||||
|
|
||||||
old_activities = set()
|
old_activities = set()
|
||||||
@ -213,7 +216,7 @@ class PresenceService(ExportedGObject):
|
|||||||
|
|
||||||
activities_joined = new_activities - old_activities
|
activities_joined = new_activities - old_activities
|
||||||
for act in activities_joined:
|
for act in activities_joined:
|
||||||
logging.debug("Handle %s joined activity %s" % (contact_handle, act))
|
_logger.debug("Handle %s joined activity %s" % (contact_handle, act))
|
||||||
activity = self._activities.get(act)
|
activity = self._activities.get(act)
|
||||||
if not activity:
|
if not activity:
|
||||||
# new activity, can fail
|
# new activity, can fail
|
||||||
@ -225,7 +228,7 @@ class PresenceService(ExportedGObject):
|
|||||||
|
|
||||||
activities_left = old_activities - new_activities
|
activities_left = old_activities - new_activities
|
||||||
for act in activities_left:
|
for act in activities_left:
|
||||||
logging.debug("Handle %s left activity %s" % (contact_handle, act))
|
_logger.debug("Handle %s left activity %s" % (contact_handle, act))
|
||||||
activity = self._activities.get(act)
|
activity = self._activities.get(act)
|
||||||
if not activity:
|
if not activity:
|
||||||
continue
|
continue
|
||||||
@ -341,10 +344,10 @@ class PresenceService(ExportedGObject):
|
|||||||
def _activity_validity_changed_cb(self, activity, valid):
|
def _activity_validity_changed_cb(self, activity, valid):
|
||||||
if valid:
|
if valid:
|
||||||
self.ActivityAppeared(activity.object_path())
|
self.ActivityAppeared(activity.object_path())
|
||||||
logging.debug("New Activity: %s (%s)" % (activity.props.name, activity.props.id))
|
_logger.debug("New Activity: %s (%s)" % (activity.props.name, activity.props.id))
|
||||||
else:
|
else:
|
||||||
self.ActivityDisappeared(activity.object_path())
|
self.ActivityDisappeared(activity.object_path())
|
||||||
logging.debug("Activity disappeared: %s (%s)" % (activity.props.name, activity.props.id))
|
_logger.debug("Activity disappeared: %s (%s)" % (activity.props.name, activity.props.id))
|
||||||
|
|
||||||
def _activity_properties_changed(self, tp, act_id, props):
|
def _activity_properties_changed(self, tp, act_id, props):
|
||||||
activity = self._activities.get(act_id)
|
activity = self._activities.get(act_id)
|
||||||
@ -364,7 +367,7 @@ def main(test_num=0, randomize=False):
|
|||||||
loop.run()
|
loop.run()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
ps.cleanup()
|
ps.cleanup()
|
||||||
logging.debug('Ctrl+C pressed, exiting...')
|
_logger.debug('Ctrl+C pressed, exiting...')
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
@ -18,6 +18,9 @@ import dbus, dbus.glib, gobject
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s.psutils')
|
||||||
|
|
||||||
|
|
||||||
def bytes_to_string(bytes):
|
def bytes_to_string(bytes):
|
||||||
"""The function converts a D-BUS byte array provided by dbus to string format.
|
"""The function converts a D-BUS byte array provided by dbus to string format.
|
||||||
|
|
||||||
@ -92,7 +95,7 @@ class IP4AddressMonitor(gobject.GObject):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self._addr = new_addr
|
self._addr = new_addr
|
||||||
logging.debug("IP4 address now '%s'" % new_addr)
|
_logger.debug("IP4 address now '%s'" % new_addr)
|
||||||
self.emit('address-changed', new_addr)
|
self.emit('address-changed', new_addr)
|
||||||
|
|
||||||
def _connect_to_nm(self):
|
def _connect_to_nm(self):
|
||||||
@ -102,7 +105,7 @@ class IP4AddressMonitor(gobject.GObject):
|
|||||||
proxy = sys_bus.get_object(NM_SERVICE, NM_PATH)
|
proxy = sys_bus.get_object(NM_SERVICE, NM_PATH)
|
||||||
self._nm_obj = dbus.Interface(proxy, NM_IFACE)
|
self._nm_obj = dbus.Interface(proxy, NM_IFACE)
|
||||||
except dbus.DBusException, err:
|
except dbus.DBusException, err:
|
||||||
logging.debug("Error finding NetworkManager: %s" % err)
|
_logger.debug("Error finding NetworkManager: %s" % err)
|
||||||
self._nm_present = False
|
self._nm_present = False
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -141,7 +144,7 @@ class IP4AddressMonitor(gobject.GObject):
|
|||||||
self._update_address(props[6])
|
self._update_address(props[6])
|
||||||
|
|
||||||
def _device_properties_error_cb(self, err):
|
def _device_properties_error_cb(self, err):
|
||||||
logging.debug("Error querying device properties: %s" % err)
|
_logger.debug("Error querying device properties: %s" % err)
|
||||||
|
|
||||||
def _query_device_properties(self, device):
|
def _query_device_properties(self, device):
|
||||||
sys_bus = dbus.SystemBus()
|
sys_bus = dbus.SystemBus()
|
||||||
@ -156,7 +159,7 @@ class IP4AddressMonitor(gobject.GObject):
|
|||||||
self._query_device_properties(op)
|
self._query_device_properties(op)
|
||||||
|
|
||||||
def _get_devices_error_cb(self, err):
|
def _get_devices_error_cb(self, err):
|
||||||
logging.debug("Error getting NetworkManager devices: %s" % err)
|
_logger.debug("Error getting NetworkManager devices: %s" % err)
|
||||||
|
|
||||||
def _query_devices(self):
|
def _query_devices(self):
|
||||||
"""Query NM for a list of network devices"""
|
"""Query NM for a list of network devices"""
|
||||||
|
@ -42,6 +42,8 @@ CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
|
|||||||
|
|
||||||
_PROTOCOL = "jabber"
|
_PROTOCOL = "jabber"
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s.server_plugin')
|
||||||
|
|
||||||
class InvalidBuddyError(Exception):
|
class InvalidBuddyError(Exception):
|
||||||
"""(Unused) exception to indicate an invalid buddy specifier"""
|
"""(Unused) exception to indicate an invalid buddy specifier"""
|
||||||
|
|
||||||
@ -144,14 +146,14 @@ class ServerPlugin(gobject.GObject):
|
|||||||
self._ip4am.connect('address-changed', self._ip4_address_changed_cb)
|
self._ip4am.connect('address-changed', self._ip4_address_changed_cb)
|
||||||
|
|
||||||
def _ip4_address_changed_cb(self, ip4am, address):
|
def _ip4_address_changed_cb(self, ip4am, address):
|
||||||
logging.debug("::: IP4 address now %s" % address)
|
_logger.debug("::: IP4 address now %s" % address)
|
||||||
if address:
|
if address:
|
||||||
logging.debug("::: valid IP4 address, conn_status %s" % self._conn_status)
|
_logger.debug("::: valid IP4 address, conn_status %s" % self._conn_status)
|
||||||
if self._conn_status == CONNECTION_STATUS_DISCONNECTED:
|
if self._conn_status == CONNECTION_STATUS_DISCONNECTED:
|
||||||
logging.debug("::: will connect")
|
_logger.debug("::: will connect")
|
||||||
self.start()
|
self.start()
|
||||||
else:
|
else:
|
||||||
logging.debug("::: invalid IP4 address, will disconnect")
|
_logger.debug("::: invalid IP4 address, will disconnect")
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
|
|
||||||
def _owner_property_changed_cb(self, owner, properties):
|
def _owner_property_changed_cb(self, owner, properties):
|
||||||
@ -169,7 +171,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
depending on which properties are present in the
|
depending on which properties are present in the
|
||||||
set of properties.
|
set of properties.
|
||||||
"""
|
"""
|
||||||
logging.debug("Owner properties changed: %s" % properties)
|
_logger.debug("Owner properties changed: %s" % properties)
|
||||||
|
|
||||||
if properties.has_key("current-activity"):
|
if properties.has_key("current-activity"):
|
||||||
self._set_self_current_activity()
|
self._set_self_current_activity()
|
||||||
@ -185,7 +187,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _owner_icon_changed_cb(self, owner, icon):
|
def _owner_icon_changed_cb(self, owner, icon):
|
||||||
"""Owner has changed their icon, forward to network"""
|
"""Owner has changed their icon, forward to network"""
|
||||||
logging.debug("Owner icon changed to size %d" % len(str(icon)))
|
_logger.debug("Owner icon changed to size %d" % len(str(icon)))
|
||||||
self._set_self_avatar(icon)
|
self._set_self_avatar(icon)
|
||||||
|
|
||||||
def _get_account_info(self):
|
def _get_account_info(self):
|
||||||
@ -250,7 +252,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _connect_error_cb(self, exception):
|
def _connect_error_cb(self, exception):
|
||||||
"""Handle connection failure"""
|
"""Handle connection failure"""
|
||||||
logging.debug("Connect error: %s" % exception)
|
_logger.debug("Connect error: %s" % exception)
|
||||||
|
|
||||||
def _init_connection(self):
|
def _init_connection(self):
|
||||||
"""Set up our connection
|
"""Set up our connection
|
||||||
@ -336,7 +338,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
subscribe[CHANNEL_INTERFACE_GROUP].AddMembers(not_subscribed, '')
|
subscribe[CHANNEL_INTERFACE_GROUP].AddMembers(not_subscribed, '')
|
||||||
|
|
||||||
if CONN_INTERFACE_BUDDY_INFO not in self._conn.get_valid_interfaces():
|
if CONN_INTERFACE_BUDDY_INFO not in self._conn.get_valid_interfaces():
|
||||||
logging.debug('OLPC information not available')
|
_logger.debug('OLPC information not available')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self._conn[CONN_INTERFACE_BUDDY_INFO].connect_to_signal('PropertiesChanged',
|
self._conn[CONN_INTERFACE_BUDDY_INFO].connect_to_signal('PropertiesChanged',
|
||||||
@ -394,7 +396,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
types, minw, minh, maxw, maxh, maxsize = self._conn[CONN_INTERFACE_AVATARS].GetAvatarRequirements()
|
types, minw, minh, maxw, maxh, maxsize = self._conn[CONN_INTERFACE_AVATARS].GetAvatarRequirements()
|
||||||
if not "image/jpeg" in types:
|
if not "image/jpeg" in types:
|
||||||
logging.debug("server does not accept JPEG format avatars.")
|
_logger.debug("server does not accept JPEG format avatars.")
|
||||||
return
|
return
|
||||||
|
|
||||||
img_data = _get_buddy_icon_at_size(icon_data, min(maxw, 96), min(maxh, 96), maxsize)
|
img_data = _get_buddy_icon_at_size(icon_data, min(maxw, 96), min(maxh, 96), maxsize)
|
||||||
@ -414,7 +416,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
if (activity_id, handles[0]) in self._joined_activities:
|
if (activity_id, handles[0]) in self._joined_activities:
|
||||||
e = RuntimeError("Already joined activity %s" % activity_id)
|
e = RuntimeError("Already joined activity %s" % activity_id)
|
||||||
logging.debug(str(e))
|
_logger.debug(str(e))
|
||||||
self.emit(signal, activity_id, None, e, userdata)
|
self.emit(signal, activity_id, None, e, userdata)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -425,7 +427,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _join_error_cb(self, activity_id, signal, userdata, err):
|
def _join_error_cb(self, activity_id, signal, userdata, err):
|
||||||
e = Exception("Error joining/sharing activity %s: %s" % (activity_id, err))
|
e = Exception("Error joining/sharing activity %s: %s" % (activity_id, err))
|
||||||
logging.debug(str(e))
|
_logger.debug(str(e))
|
||||||
self.emit(signal, activity_id, None, e, userdata)
|
self.emit(signal, activity_id, None, e, userdata)
|
||||||
|
|
||||||
def _internal_join_activity(self, activity_id, signal, userdata):
|
def _internal_join_activity(self, activity_id, signal, userdata):
|
||||||
@ -470,7 +472,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _log_error_cb(self, msg, err):
|
def _log_error_cb(self, msg, err):
|
||||||
"""Log a message (error) at debug level with prefix msg"""
|
"""Log a message (error) at debug level with prefix msg"""
|
||||||
logging.debug("Error %s: %s" % (msg, err))
|
_logger.debug("Error %s: %s" % (msg, err))
|
||||||
|
|
||||||
def _set_self_olpc_properties(self):
|
def _set_self_olpc_properties(self):
|
||||||
"""Set color and key on our Telepathy server identity"""
|
"""Set color and key on our Telepathy server identity"""
|
||||||
@ -519,7 +521,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
# dont advertise a current activity that's not shared
|
# dont advertise a current activity that's not shared
|
||||||
cur_activity = ""
|
cur_activity = ""
|
||||||
|
|
||||||
logging.debug("Setting current activity to '%s' (handle %s)" % (cur_activity, cur_activity_handle))
|
_logger.debug("Setting current activity to '%s' (handle %s)" % (cur_activity, cur_activity_handle))
|
||||||
self._conn[CONN_INTERFACE_BUDDY_INFO].SetCurrentActivity(cur_activity,
|
self._conn[CONN_INTERFACE_BUDDY_INFO].SetCurrentActivity(cur_activity,
|
||||||
cur_activity_handle,
|
cur_activity_handle,
|
||||||
reply_handler=self._ignore_success_cb,
|
reply_handler=self._ignore_success_cb,
|
||||||
@ -549,17 +551,17 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
if status == CONNECTION_STATUS_CONNECTING:
|
if status == CONNECTION_STATUS_CONNECTING:
|
||||||
self._conn_status = status
|
self._conn_status = status
|
||||||
logging.debug("status: connecting...")
|
_logger.debug("status: connecting...")
|
||||||
elif status == CONNECTION_STATUS_CONNECTED:
|
elif status == CONNECTION_STATUS_CONNECTED:
|
||||||
if self._connected_cb():
|
if self._connected_cb():
|
||||||
logging.debug("status: connected")
|
_logger.debug("status: connected")
|
||||||
self._conn_status = status
|
self._conn_status = status
|
||||||
else:
|
else:
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
logging.debug("status: was connected, but an error occurred")
|
_logger.debug("status: was connected, but an error occurred")
|
||||||
elif status == CONNECTION_STATUS_DISCONNECTED:
|
elif status == CONNECTION_STATUS_DISCONNECTED:
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
logging.debug("status: disconnected (reason %r)" % reason)
|
_logger.debug("status: disconnected (reason %r)" % reason)
|
||||||
if reason == CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED:
|
if reason == CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED:
|
||||||
# FIXME: handle connection failure; retry later?
|
# FIXME: handle connection failure; retry later?
|
||||||
pass
|
pass
|
||||||
@ -580,7 +582,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
status -- CONNECTION_STATUS_*
|
status -- CONNECTION_STATUS_*
|
||||||
reason -- integer code describing the reason...
|
reason -- integer code describing the reason...
|
||||||
"""
|
"""
|
||||||
logging.debug("::: connection status changed to %s" % status)
|
_logger.debug("::: connection status changed to %s" % status)
|
||||||
self._handle_connection_status_change(status, reason)
|
self._handle_connection_status_change(status, reason)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
@ -594,7 +596,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
otherwise initiate a connection and transfer control to
|
otherwise initiate a connection and transfer control to
|
||||||
_connect_reply_cb or _connect_error_cb
|
_connect_reply_cb or _connect_error_cb
|
||||||
"""
|
"""
|
||||||
logging.debug("Starting up...")
|
_logger.debug("Starting up...")
|
||||||
|
|
||||||
if self._reconnect_id > 0:
|
if self._reconnect_id > 0:
|
||||||
gobject.source_remove(self._reconnect_id)
|
gobject.source_remove(self._reconnect_id)
|
||||||
@ -602,10 +604,10 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
# Only init connection if we have a valid IP address
|
# Only init connection if we have a valid IP address
|
||||||
if self._ip4am.props.address:
|
if self._ip4am.props.address:
|
||||||
logging.debug("::: Have IP4 address %s, will connect" % self._ip4am.props.address)
|
_logger.debug("::: Have IP4 address %s, will connect" % self._ip4am.props.address)
|
||||||
self._init_connection()
|
self._init_connection()
|
||||||
else:
|
else:
|
||||||
logging.debug("::: No IP4 address, postponing connection")
|
_logger.debug("::: No IP4 address, postponing connection")
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
"""If we still have a connection, disconnect it"""
|
"""If we still have a connection, disconnect it"""
|
||||||
@ -638,14 +640,14 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _contact_online_activities_error_cb(self, handle, err):
|
def _contact_online_activities_error_cb(self, handle, err):
|
||||||
"""Handle contact's activity list being unavailable"""
|
"""Handle contact's activity list being unavailable"""
|
||||||
logging.debug("Handle %s - Error getting activities: %s" % (handle, err))
|
_logger.debug("Handle %s - Error getting activities: %s" % (handle, err))
|
||||||
# Don't drop the buddy if we can't get their activities, for now
|
# Don't drop the buddy if we can't get their activities, for now
|
||||||
#self._contact_offline(handle)
|
#self._contact_offline(handle)
|
||||||
|
|
||||||
def _contact_online_aliases_cb(self, handle, props, aliases):
|
def _contact_online_aliases_cb(self, handle, props, aliases):
|
||||||
"""Handle contact's alias being received (do further queries)"""
|
"""Handle contact's alias being received (do further queries)"""
|
||||||
if not self._conn or not aliases or not len(aliases):
|
if not self._conn or not aliases or not len(aliases):
|
||||||
logging.debug("Handle %s - No aliases" % handle)
|
_logger.debug("Handle %s - No aliases" % handle)
|
||||||
self._contact_offline(handle)
|
self._contact_offline(handle)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -660,17 +662,17 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _contact_online_aliases_error_cb(self, handle, err):
|
def _contact_online_aliases_error_cb(self, handle, err):
|
||||||
"""Handle failure to retrieve given user's alias/information"""
|
"""Handle failure to retrieve given user's alias/information"""
|
||||||
logging.debug("Handle %s - Error getting nickname: %s" % (handle, err))
|
_logger.debug("Handle %s - Error getting nickname: %s" % (handle, err))
|
||||||
self._contact_offline(handle)
|
self._contact_offline(handle)
|
||||||
|
|
||||||
def _contact_online_properties_cb(self, handle, props):
|
def _contact_online_properties_cb(self, handle, props):
|
||||||
"""Handle failure to retrieve given user's alias/information"""
|
"""Handle failure to retrieve given user's alias/information"""
|
||||||
if not props.has_key('key'):
|
if not props.has_key('key'):
|
||||||
logging.debug("Handle %s - invalid key." % handle)
|
_logger.debug("Handle %s - invalid key." % handle)
|
||||||
self._contact_offline(handle)
|
self._contact_offline(handle)
|
||||||
return
|
return
|
||||||
if not props.has_key('color'):
|
if not props.has_key('color'):
|
||||||
logging.debug("Handle %s - invalid color." % handle)
|
_logger.debug("Handle %s - invalid color." % handle)
|
||||||
self._contact_offline(handle)
|
self._contact_offline(handle)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -683,7 +685,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
|
|
||||||
def _contact_online_properties_error_cb(self, handle, err):
|
def _contact_online_properties_error_cb(self, handle, err):
|
||||||
"""Handle error retrieving property-set for a user (handle)"""
|
"""Handle error retrieving property-set for a user (handle)"""
|
||||||
logging.debug("Handle %s - Error getting properties: %s" % (handle, err))
|
_logger.debug("Handle %s - Error getting properties: %s" % (handle, err))
|
||||||
self._contact_offline(handle)
|
self._contact_offline(handle)
|
||||||
|
|
||||||
def _contact_online(self, handle):
|
def _contact_online(self, handle):
|
||||||
@ -712,7 +714,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
jid = self._conn[CONN_INTERFACE].InspectHandles(CONNECTION_HANDLE_TYPE_CONTACT, [handle])[0]
|
jid = self._conn[CONN_INTERFACE].InspectHandles(CONNECTION_HANDLE_TYPE_CONTACT, [handle])[0]
|
||||||
olstr = "ONLINE"
|
olstr = "ONLINE"
|
||||||
if not online: olstr = "OFFLINE"
|
if not online: olstr = "OFFLINE"
|
||||||
logging.debug("Handle %s (%s) was %s, status now '%s'." % (handle, jid, olstr, status))
|
_logger.debug("Handle %s (%s) was %s, status now '%s'." % (handle, jid, olstr, status))
|
||||||
if not online and status in ["available", "away", "brb", "busy", "dnd", "xa"]:
|
if not online and status in ["available", "away", "brb", "busy", "dnd", "xa"]:
|
||||||
self._contact_online(handle)
|
self._contact_online(handle)
|
||||||
elif status in ["offline", "invisible"]:
|
elif status in ["offline", "invisible"]:
|
||||||
@ -726,12 +728,12 @@ class ServerPlugin(gobject.GObject):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if not self._online_contacts.has_key(handle):
|
if not self._online_contacts.has_key(handle):
|
||||||
logging.debug("Handle %s unknown." % handle)
|
_logger.debug("Handle %s unknown." % handle)
|
||||||
return
|
return
|
||||||
|
|
||||||
jid = self._online_contacts[handle]
|
jid = self._online_contacts[handle]
|
||||||
if not jid:
|
if not jid:
|
||||||
logging.debug("Handle %s not valid yet..." % handle)
|
_logger.debug("Handle %s not valid yet..." % handle)
|
||||||
return
|
return
|
||||||
|
|
||||||
icon = self._icon_cache.get_icon(jid, new_avatar_token)
|
icon = self._icon_cache.get_icon(jid, new_avatar_token)
|
||||||
@ -787,7 +789,7 @@ class ServerPlugin(gobject.GObject):
|
|||||||
if not len(activity) or not util.validate_activity_id(activity):
|
if not len(activity) or not util.validate_activity_id(activity):
|
||||||
activity = None
|
activity = None
|
||||||
prop = {'current-activity': activity}
|
prop = {'current-activity': activity}
|
||||||
logging.debug("Handle %s: current activity now %s" % (handle, activity))
|
_logger.debug("Handle %s: current activity now %s" % (handle, activity))
|
||||||
self._buddy_properties_changed_cb(handle, prop)
|
self._buddy_properties_changed_cb(handle, prop)
|
||||||
|
|
||||||
def _new_channel_cb(self, object_path, channel_type, handle_type, handle, suppress_handler):
|
def _new_channel_cb(self, object_path, channel_type, handle_type, handle, suppress_handler):
|
||||||
|
@ -24,8 +24,12 @@ import os
|
|||||||
from sugar import logger
|
from sugar import logger
|
||||||
from sugar import env
|
from sugar import env
|
||||||
|
|
||||||
|
|
||||||
|
_logger = logging.getLogger('s-p-s')
|
||||||
|
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
logging.debug("Usage: sugar-presence-service [<test buddy number (1 - 10)>] [randomize]")
|
_logger.debug("Usage: sugar-presence-service [<test buddy number (1 - 10)>] [randomize]")
|
||||||
|
|
||||||
sys.path.append(env.get_service_path('presence'))
|
sys.path.append(env.get_service_path('presence'))
|
||||||
|
|
||||||
@ -35,9 +39,9 @@ if len(sys.argv) in [2, 3]:
|
|||||||
try:
|
try:
|
||||||
test_num = int(sys.argv[1])
|
test_num = int(sys.argv[1])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
logging.debug("Bad test user number.")
|
_logger.debug("Bad test user number.")
|
||||||
if test_num < 1 or test_num > 10:
|
if test_num < 1 or test_num > 10:
|
||||||
logging.debug("Bad test user number.")
|
_logger.debug("Bad test user number.")
|
||||||
|
|
||||||
if len(sys.argv) == 3 and sys.argv[2] == "randomize":
|
if len(sys.argv) == 3 and sys.argv[2] == "randomize":
|
||||||
randomize = True
|
randomize = True
|
||||||
@ -54,6 +58,6 @@ else:
|
|||||||
|
|
||||||
import presenceservice
|
import presenceservice
|
||||||
|
|
||||||
logging.info('Starting presence service...')
|
_logger.info('Starting presence service...')
|
||||||
|
|
||||||
presenceservice.main(test_num, randomize)
|
presenceservice.main(test_num, randomize)
|
||||||
|
@ -36,6 +36,8 @@ DBUS_SERVICE = "org.laptop.Sugar.Presence"
|
|||||||
DBUS_INTERFACE = "org.laptop.Sugar.Presence"
|
DBUS_INTERFACE = "org.laptop.Sugar.Presence"
|
||||||
DBUS_PATH = "/org/laptop/Sugar/Presence"
|
DBUS_PATH = "/org/laptop/Sugar/Presence"
|
||||||
|
|
||||||
|
_logger = logging.getLogger('sugar.presence.presenceservice')
|
||||||
|
|
||||||
|
|
||||||
class PresenceService(gobject.GObject):
|
class PresenceService(gobject.GObject):
|
||||||
"""UI-side interface to the dbus presence service
|
"""UI-side interface to the dbus presence service
|
||||||
@ -116,7 +118,7 @@ class PresenceService(gobject.GObject):
|
|||||||
DBUS_INTERFACE
|
DBUS_INTERFACE
|
||||||
)
|
)
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.error(
|
_logger.error(
|
||||||
"""Failure retrieving %r interface from the D-BUS service %r %r: %s""",
|
"""Failure retrieving %r interface from the D-BUS service %r %r: %s""",
|
||||||
DBUS_INTERFACE, DBUS_SERVICE, DBUS_PATH, err
|
DBUS_INTERFACE, DBUS_SERVICE, DBUS_PATH, err
|
||||||
)
|
)
|
||||||
@ -247,7 +249,7 @@ class PresenceService(gobject.GObject):
|
|||||||
try:
|
try:
|
||||||
resp = self._ps.GetActivities()
|
resp = self._ps.GetActivities()
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.warn(
|
_logger.warn(
|
||||||
"""Unable to retrieve activity list from presence service: %s"""
|
"""Unable to retrieve activity list from presence service: %s"""
|
||||||
% err
|
% err
|
||||||
)
|
)
|
||||||
@ -269,7 +271,7 @@ class PresenceService(gobject.GObject):
|
|||||||
try:
|
try:
|
||||||
act_op = self._ps.GetActivityById(activity_id)
|
act_op = self._ps.GetActivityById(activity_id)
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.warn(
|
_logger.warn(
|
||||||
"""Unable to retrieve activity handle for %r from presence service: %s"""
|
"""Unable to retrieve activity handle for %r from presence service: %s"""
|
||||||
% (activity_id, err)
|
% (activity_id, err)
|
||||||
)
|
)
|
||||||
@ -285,7 +287,7 @@ class PresenceService(gobject.GObject):
|
|||||||
try:
|
try:
|
||||||
resp = self._ps.GetBuddies()
|
resp = self._ps.GetBuddies()
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.warn(
|
_logger.warn(
|
||||||
"""Unable to retrieve buddy-list from presence service: %s"""
|
"""Unable to retrieve buddy-list from presence service: %s"""
|
||||||
% err
|
% err
|
||||||
)
|
)
|
||||||
@ -308,7 +310,7 @@ class PresenceService(gobject.GObject):
|
|||||||
try:
|
try:
|
||||||
buddy_op = self._ps.GetBuddyByPublicKey(dbus.ByteArray(key))
|
buddy_op = self._ps.GetBuddyByPublicKey(dbus.ByteArray(key))
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.warn(
|
_logger.warn(
|
||||||
"""Unable to retrieve buddy handle for %r from presence service: %s"""
|
"""Unable to retrieve buddy handle for %r from presence service: %s"""
|
||||||
% key, err
|
% key, err
|
||||||
)
|
)
|
||||||
@ -320,7 +322,7 @@ class PresenceService(gobject.GObject):
|
|||||||
try:
|
try:
|
||||||
owner_op = self._ps.GetOwner()
|
owner_op = self._ps.GetOwner()
|
||||||
except dbus.exceptions.DBusException, err:
|
except dbus.exceptions.DBusException, err:
|
||||||
logging.warn(
|
_logger.warn(
|
||||||
"""Unable to retrieve local user/owner from presence service: %s"""
|
"""Unable to retrieve local user/owner from presence service: %s"""
|
||||||
% err
|
% err
|
||||||
)
|
)
|
||||||
@ -335,7 +337,7 @@ class PresenceService(gobject.GObject):
|
|||||||
|
|
||||||
def _share_activity_error_cb(self, activity, err):
|
def _share_activity_error_cb(self, activity, err):
|
||||||
"""Notify with GObject event of unsuccessful sharing of activity"""
|
"""Notify with GObject event of unsuccessful sharing of activity"""
|
||||||
logging.debug("Error sharing activity %s: %s" % (activity.get_id(), err))
|
_logger.debug("Error sharing activity %s: %s" % (activity.get_id(), err))
|
||||||
self.emit("activity-shared", False, None, err)
|
self.emit("activity-shared", False, None, err)
|
||||||
|
|
||||||
def share_activity(self, activity, properties={}):
|
def share_activity(self, activity, properties={}):
|
||||||
|
Loading…
Reference in New Issue
Block a user