Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-04-09 18:40:50 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-04-09 18:40:50 (GMT)
commit2509d990e4837f4810a372fda40d260f32014712 (patch)
treebfe5df48a74d9a4362be906002879c61b1132f9a /sugar
parent2f2f756939c381baff8089fb99d604b2bb49aadf (diff)
Cut over to new PresenceService
Diffstat (limited to 'sugar')
-rw-r--r--sugar/presence/Service.py120
-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()