Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/p2p
diff options
context:
space:
mode:
Diffstat (limited to 'sugar/p2p')
-rw-r--r--sugar/p2p/Group.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/sugar/p2p/Group.py b/sugar/p2p/Group.py
index c3d7d6d..64f507f 100644
--- a/sugar/p2p/Group.py
+++ b/sugar/p2p/Group.py
@@ -11,16 +11,28 @@ import presence
_OLPC_SERVICE_TYPE_PREFIX = "_olpc"
class Group:
+ _groups = {}
+
SERVICE_ADDED = "service_added"
SERVICE_REMOVED = "service_removed"
BUDDY_JOIN = "buddy_join"
BUDDY_LEAVE = "buddy_leave"
-
- def __init__(self):
+
+ def get_from_id(group_id):
+ if group_id == 'local' and not Group._groups.has_key(group_id):
+ return LocalGroup()
+ else:
+ group = Group._groups[group_id]
+ get_from_id = staticmethod(get_from_id)
+
+ def __init__(self, group_id):
+ self._group_id = group_id
self._service_listeners = []
self._presence_listeners = []
self._store = Store(self)
+
+ Group._groups[group_id] = self
def get_store(self):
return self._store
@@ -52,7 +64,7 @@ class Group:
class LocalGroup(Group):
def __init__(self):
- Group.__init__(self)
+ Group.__init__(self, 'local')
self._services = {}
self._buddies = {}