Make D-Bus calls async on startup

This commit is contained in:
John (J5) Palmieri
2007-08-27 15:47:58 -04:00
parent 2cae66b0ea
commit c06d639487
6 changed files with 123 additions and 22 deletions
+23
View File
@@ -77,6 +77,29 @@ class ActivityRegistry(gobject.GObject):
info_list = self._registry.GetActivities()
return self._convert_info_list(info_list)
def _get_activities_cb(self, reply_handler, info_list):
result = []
i = 0
for info_dict in info_list:
result.append(_activity_info_from_dict(info_dict))
reply_handler(result)
def _get_activities_error_cb(self, error_handler, e):
if error_handler:
error_handler(e)
else:
logging.error('Error getting activities async: %s' % str(e))
def get_activities_async(self, reply_handler=None, error_handler=None):
if not reply_handler:
logging.error('Function get_activities_async called without a reply handler. Can not run.')
return
self._registry.GetActivities(
reply_handler=lambda info_list:self._get_activities_cb(reply_handler, info_list),
error_handler=lambda e:self._get_activities_error_cb(error_handler, e))
def get_activity(self, service_name):
if self._service_name_to_activity_info.has_key(service_name):
return self._service_name_to_activity_info[service_name]
+57
View File
@@ -268,6 +268,35 @@ class PresenceService(gobject.GObject):
acts.append(self._new_object(item))
return acts
def _get_activities_cb(self, reply_handler, resp):
acts = []
for item in resp:
acts.append(self._new_object(item))
reply_handler(acts)
def _get_activities_error_cb(self, error_handler, e):
if error_handler:
error_handler(e)
else:
_logger.warn(
"""Unable to retrieve activity-list from presence service: %s"""
% e
)
def get_buddies_async(self, reply_handler=None, error_handler=None):
"""Retrieve set of all activities from service asyncronously
"""
if not reply_handler:
logging.error('Function get_activities_async called without a reply handler. Can not run.')
return
self._ps.GetActivities(
reply_handler=lambda resp:self._get_activities_cb(reply_handler, resp),
error_handler=lambda e:self._get_activities_error_cb(error_handler, e))
def get_activity(self, activity_id):
"""Retrieve single Activity object for the given unique id
@@ -306,6 +335,34 @@ class PresenceService(gobject.GObject):
buddies.append(self._new_object(item))
return buddies
def _get_buddies_cb(self, reply_handler, resp):
buddies = []
for item in resp:
buddies.append(self._new_object(item))
reply_handler(buddies)
def _get_buddies_error_cb(self, error_handler, e):
if error_handler:
error_handler(e)
else:
_logger.warn(
"""Unable to retrieve buddy-list from presence service: %s"""
% e
)
def get_buddies_async(self, reply_handler=None, error_handler=None):
"""Retrieve set of all buddies from service asyncronously
"""
if not reply_handler:
logging.error('Function get_buddies_async called without a reply handler. Can not run.')
return
self._ps.GetBuddies(
reply_handler=lambda resp:self._get_buddies_cb(reply_handler, resp),
error_handler=lambda e:self._get_buddies_error_cb(error_handler, e))
def get_buddy(self, key):
"""Retrieve single Buddy object for the given public key