Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@collabora.co.uk>2007-07-02 13:55:06 (GMT)
committer Morgan Collett <morgan.collett@collabora.co.uk>2007-07-02 13:55:06 (GMT)
commit193c604d9d213f7e7d4ec717c1097cf2e73a344a (patch)
tree2acb974208bfd08024ff2a6d5d668ec55ed041fb
parent326aa36a9e8745870e7f09515dd1d897e9e374c9 (diff)
Add ordered bus names
-rw-r--r--activity.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/activity.py b/activity.py
index 6bcf6bb..11ef012 100644
--- a/activity.py
+++ b/activity.py
@@ -226,13 +226,16 @@ class HelloTube(ExportedGObject):
"""The bit that talks over the TUBES!!!"""
def __init__(self, tube, is_initiator, get_buddy):
+ self._logger = logging.getLogger('hellomesh-activity.HelloTube')
self.tube = tube
self.is_initiator = is_initiator
self.entered = False # Have we set up the tube?
self.helloworld = False # Have we said Hello and received World?
self._get_buddy = get_buddy # Converts handle to Buddy object
+
+ self.ordered_bus_names = []
+
self.tube.watch_participants(self.participant_change_cb)
- self._logger = logging.getLogger('hellomesh-activity.HelloTube')
def participant_change_cb(self, added, removed):
self._logger.debug('Adding participants: %r' % added)
@@ -247,13 +250,20 @@ class HelloTube(ExportedGObject):
buddy = self._get_buddy(handle)
if buddy is not None:
self._logger.debug('Buddy %s was removed' % buddy.props.nick)
- # Do activity logic with new or removed buddies
+ try:
+ self.ordered_bus_names.remove(self.tube.participants[handle])
+ except ValueError:
+ # already absent
+ pass
if not self.entered:
#self.tube.add_signal_receiver(self.insert_cb, 'Insert', IFACE,
# path=PATH, sender_keyword='sender')
if self.is_initiator:
+ self._logger.debug("I'm initiating the tube, will "
+ "watch for hellos.")
self.add_hello_handler()
+ self.ordered_bus_names = [self.tube.get_unique_name()]
else:
self._logger.debug('Hello, everyone! What did I miss?')
self.Hello()
@@ -265,10 +275,11 @@ class HelloTube(ExportedGObject):
self._logger.debug('I said Hello.')
@method(dbus_interface=IFACE, in_signature='as', out_signature='')
- def World(self, name):
+ def World(self, bus_names):
"""To be called on the incoming XO after they Hello."""
- if not self.helloworld:
- self._logger.debug('%s said World.')
+ if not 1 or self.helloworld: # XXX remove 1
+ self._logger.debug('Somebody said World.')
+ self.ordered_bus_names = bus_names
# now I can World others
self.add_hello_handler()
@@ -277,6 +288,7 @@ class HelloTube(ExportedGObject):
self._logger.debug("I've already been welcomed, doing nothing")
def add_hello_handler(self):
+ self._logger.debug('Adding hello handler.')
self.tube.add_signal_receiver(self.hello_cb, 'Hello', IFACE,
path=PATH, sender_keyword='sender')
@@ -284,9 +296,6 @@ class HelloTube(ExportedGObject):
"""Somebody Helloed me. World them."""
self._logger.debug('Newcomer %s has joined', sender)
self.ordered_bus_names.append(sender)
- if len(self.ordered_bus_names) == 2:
- buddy = self._get_buddy(self.tube.bus_name_to_handle[sender])
- self.buddies_panel.add_player(buddy)
self._logger.debug('Bus names are now: %r', self.ordered_bus_names)
self._logger.debug('Welcoming newcomer and sending them the game state')
self.tube.get_object(sender, PATH).World(self.ordered_bus_names,