diff options
author | Dan Williams <dcbw@redhat.com> | 2007-04-09 18:40:50 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2007-04-09 18:40:50 (GMT) |
commit | 2509d990e4837f4810a372fda40d260f32014712 (patch) | |
tree | bfe5df48a74d9a4362be906002879c61b1132f9a /sugar | |
parent | 2f2f756939c381baff8089fb99d604b2bb49aadf (diff) |
Cut over to new PresenceService
Diffstat (limited to 'sugar')
-rw-r--r-- | sugar/presence/Service.py | 120 | ||||
-rw-r--r-- | sugar/presence/activity.py (renamed from sugar/presence/Activity.py) | 0 | ||||
-rw-r--r-- | sugar/presence/buddy.py (renamed from sugar/presence/Buddy.py) | 0 | ||||
-rw-r--r-- | sugar/presence/presenceservice.py (renamed from sugar/presence/PresenceService.py) | 91 |
4 files changed, 11 insertions, 200 deletions
diff --git a/sugar/presence/Service.py b/sugar/presence/Service.py deleted file mode 100644 index 22b436f..0000000 --- a/sugar/presence/Service.py +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright (C) 2006, Red Hat, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -import gobject -import dbus - - -def _one_dict_differs(dict1, dict2): - diff_keys = [] - for key, value in dict1.items(): - if not dict2.has_key(key) or dict2[key] != value: - diff_keys.append(key) - return diff_keys - -def _dicts_differ(dict1, dict2): - diff_keys = [] - diff1 = _one_dict_differs(dict1, dict2) - diff2 = _one_dict_differs(dict2, dict1) - for key in diff2: - if key not in diff1: - diff_keys.append(key) - diff_keys += diff1 - return diff_keys - -class Service(gobject.GObject): - - _PRESENCE_SERVICE = "org.laptop.Presence" - _SERVICE_DBUS_INTERFACE = "org.laptop.Presence.Service" - - __gsignals__ = { - 'published-value-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])) - } - - def __init__(self, bus, new_obj_cb, del_obj_cb, object_path): - gobject.GObject.__init__(self) - self._object_path = object_path - self._ps_new_object = new_obj_cb - self._ps_del_object = del_obj_cb - sobj = bus.get_object(self._PRESENCE_SERVICE, object_path) - self._service = dbus.Interface(sobj, self._SERVICE_DBUS_INTERFACE) - self._service.connect_to_signal('PropertyChanged', self.__property_changed_cb) - self._service.connect_to_signal('PublishedValueChanged', - self.__published_value_changed_cb) - self._props = self._service.getProperties() - self._pubvals = self._service.getPublishedValues() - - def object_path(self): - return self._object_path - - def __property_changed_cb(self, prop_list): - self._props = self._service.getProperties() - - def get_published_value(self, key): - return self._pubvals[key] - - def get_published_values(self): - self._pubvals = self._service.getPublishedValues() - return self._pubvals - - def set_published_value(self, key, value): - if self._pubvals.has_key(key): - if self._pubvals[key] == value: - return - self._pubvals[key] = value - self._service.setPublishedValue(key, value) - - def set_published_values(self, vals): - self._service.setPublishedValues(vals) - self._pubvals = vals - - def __published_value_changed_cb(self, keys): - oldvals = self._pubvals - self.get_published_values() - diff_keys = _dicts_differ(oldvals, self._pubvals) - if len(diff_keys) > 0: - self.emit('published-value-changed', diff_keys) - - def get_name(self): - return self._props['name'] - - def get_type(self): - return self._props['type'] - - def get_domain(self): - return self._props['domain'] - - def get_address(self): - if self._props.has_key('address'): - return self._props['address'] - return None - - def get_activity_id(self): - if self._props.has_key('activityId'): - return self._props['activityId'] - return None - - def get_port(self): - if self._props.has_key('port'): - return self._props['port'] - return None - - def get_source_address(self): - if self._props.has_key('sourceAddress'): - return self._props['sourceAddress'] - return None diff --git a/sugar/presence/Activity.py b/sugar/presence/activity.py index 06c8a00..06c8a00 100644 --- a/sugar/presence/Activity.py +++ b/sugar/presence/activity.py diff --git a/sugar/presence/Buddy.py b/sugar/presence/buddy.py index 740b29b..740b29b 100644 --- a/sugar/presence/Buddy.py +++ b/sugar/presence/buddy.py diff --git a/sugar/presence/PresenceService.py b/sugar/presence/presenceservice.py index 4c779c6..a9a6f5b 100644 --- a/sugar/presence/PresenceService.py +++ b/sugar/presence/presenceservice.py @@ -17,9 +17,7 @@ import dbus, dbus.glib, gobject -import Buddy, Service, Activity - -_ENABLED = True +import buddy, service, activity class ObjectCache(object): def __init__(self): @@ -41,9 +39,9 @@ class ObjectCache(object): del self._cache[object_path] -DBUS_SERVICE = "org.laptop.Presence" -DBUS_INTERFACE = "org.laptop.Presence" -DBUS_PATH = "/org/laptop/Presence" +DBUS_SERVICE = "org.laptop.Sugar.Presence" +DBUS_INTERFACE = "org.laptop.Sugar.Presence" +DBUS_PATH = "/org/laptop/Sugar/Presence" class PresenceService(gobject.GObject): @@ -53,10 +51,11 @@ class PresenceService(gobject.GObject): ([gobject.TYPE_PYOBJECT])), 'buddy-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])), - 'service-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'service-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + 'activity-invitation': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])), + 'private-invitation': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, + gobject.TYPE_PYOBJECT])), 'activity-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])), 'activity-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, @@ -76,10 +75,10 @@ class PresenceService(gobject.GObject): DBUS_PATH), DBUS_INTERFACE) self._ps.connect_to_signal('BuddyAppeared', self._buddy_appeared_cb) self._ps.connect_to_signal('BuddyDisappeared', self._buddy_disappeared_cb) - self._ps.connect_to_signal('ServiceAppeared', self._service_appeared_cb) - self._ps.connect_to_signal('ServiceDisappeared', self._service_disappeared_cb) self._ps.connect_to_signal('ActivityAppeared', self._activity_appeared_cb) self._ps.connect_to_signal('ActivityDisappeared', self._activity_disappeared_cb) + self._ps.connect_to_signal('ActivityInvitation', self._activity_invitation_cb) + self._ps.connect_to_signal('PrivateInvitation', self._private_invitation_cb) def _new_object(self, object_path): obj = self._objcache.get(object_path) @@ -225,77 +224,9 @@ class PresenceService(gobject.GObject): def unregister_service_type(self, stype): self._ps.unregisterServiceType(stype) -class _MockPresenceService(gobject.GObject): - - __gsignals__ = { - 'buddy-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'buddy-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'service-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'service-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'activity-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'activity-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])) - } - - def __init__(self): - gobject.GObject.__init__(self) - - def get_services(self): - return [] - - def get_services_of_type(self, stype): - return [] - - def get_activities(self): - return [] - - def get_activity(self, activity_id): - return None - - def get_buddies(self): - return [] - - def get_buddy_by_name(self, name): - return None - - def get_buddy_by_address(self, addr): - return None - - def get_owner(self): - return None - - def share_activity(self, activity, stype, properties={}, address=None, port=-1, domain=u"local"): - return None - - def register_service(self, name, stype, properties={}, address=None, port=-1, domain=u"local"): - return None - - def unregister_service(self, service): - pass - - def register_service_type(self, stype): - pass - - def unregister_service_type(self, stype): - pass - _ps = None def get_instance(): global _ps if not _ps: - if _ENABLED: - _ps = PresenceService() - else: - _ps = _MockPresenceService() + _ps = PresenceService() return _ps - -def start(): - if _ENABLED: - bus = dbus.SessionBus() - ps = dbus.Interface(bus.get_object(DBUS_SERVICE, DBUS_PATH), DBUS_INTERFACE) - ps.start() |