Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/presence2/presenceservice.py
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2007-02-26 11:28:50 (GMT)
committer Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>2007-02-26 11:28:50 (GMT)
commitd49a3b52abd99e9aa112a64a1a7fdb364c58125f (patch)
tree2477f631e5359b664661112de327c5b208082a49 /services/presence2/presenceservice.py
parent500bd702b14abbaeee836bbb14a98499dddccc16 (diff)
only remove the buddy if we don't see it using all CM
Diffstat (limited to 'services/presence2/presenceservice.py')
-rw-r--r--services/presence2/presenceservice.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/services/presence2/presenceservice.py b/services/presence2/presenceservice.py
index 2692f1a..fa115a8 100644
--- a/services/presence2/presenceservice.py
+++ b/services/presence2/presenceservice.py
@@ -80,6 +80,7 @@ class PresenceService(dbus.service.Object):
pass
def _contact_online(self, tp, handle, key):
+ new_buddy = False
buddy = self._buddies.get(key)
if not buddy:
@@ -89,21 +90,30 @@ class PresenceService(dbus.service.Object):
buddy.set_key(key)
print "create buddy"
self._buddies[key] = buddy
+ new_buddy = True
buddies = self._handles[tp]
buddies[handle] = buddy
- self.BuddyAppeared(buddy.object_path())
+ # store the handle of the buddy for this CM
+ buddy.handles[tp] = handle
+
+ if new_buddy:
+ self.BuddyAppeared(buddy.object_path())
def _contact_offline(self, tp, handle):
buddy = self._handles[tp].pop(handle)
key = buddy.get_key()
- # TODO: check if we don't see this buddy using the other CM
- self._buddies.pop(key)
- print "remove buddy"
+ # the handle of the buddy for this CM is not valid anymore
+ buddy.handles.pop(tp)
- self.BuddyDisappeared(buddy.object_path())
+ if not buddy.handles:
+ # we remove the last handle of the buddy, so we don't see
+ # it anymore.
+ self._buddies.pop(key)
+ print "remove buddy"
+ self.BuddyDisappeared(buddy.object_path())
def _get_next_object_id(self):
"""Increment and return the object ID counter."""