diff options
author | Morgan Collett <morgan.collett@gmail.com> | 2007-08-20 13:12:45 (GMT) |
---|---|---|
committer | Morgan Collett <morgan.collett@gmail.com> | 2007-08-20 13:12:45 (GMT) |
commit | 780d166e7cd86d449e0caafbbf8154c334aaaaf5 (patch) | |
tree | 4284a9c89abdeb4e7896fcfe5dd60cc215393ec0 | |
parent | 80546e6919b0b22095440ba3324a8a39b3dc3f73 (diff) |
Code cleanup, remove unnecessary ordered_bus_names stuff
-rw-r--r-- | activity.py | 55 |
1 files changed, 14 insertions, 41 deletions
diff --git a/activity.py b/activity.py index 4ec053e..a37af00 100644 --- a/activity.py +++ b/activity.py @@ -18,6 +18,7 @@ import hippo import gtk +import time import logging import telepathy import telepathy.client @@ -65,7 +66,7 @@ class HelloMeshActivity(Activity): self.set_canvas(canvas) self.show_all() - self.hellotube = None + self.hellotube = None # Shared session # get the Presence Service self.pservice = presenceservice.get_instance() @@ -108,8 +109,6 @@ class HelloMeshActivity(Activity): id = self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].OfferTube( telepathy.TUBE_TYPE_DBUS, SERVICE, {}) - # FIXME: presence service should be tubes-aware and give us more help - # with this def _setup(self): if self._shared_activity is None: self._logger.error('Failed to share or join activity') @@ -184,12 +183,10 @@ class HelloMeshActivity(Activity): self._logger.debug('New tube: ID=%d initator=%d type=%d service=%s ' 'params=%r state=%d', id, initiator, type, service, params, state) - if (type == telepathy.TUBE_TYPE_DBUS and service == SERVICE): if state == telepathy.TUBE_STATE_LOCAL_PENDING: self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].AcceptTube(id) - tube_conn = TubeConnection(self.conn, self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES], id, group_iface=self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP]) @@ -216,12 +213,8 @@ class HelloMeshActivity(Activity): else: handle = cs_handle logger.debug('non-CS handle %u belongs to itself', handle) - # XXX: deal with failure to get the handle owner assert handle != 0 - - # XXX: we're assuming that we have Buddy objects for all contacts - - # this might break when the server becomes scalable. return self.pservice.get_buddy_by_telepathy_handle(self.tp_conn_name, self.tp_conn_path, handle) @@ -234,40 +227,27 @@ class HelloTube(ExportedGObject): 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.helloworld = False # Trivial "game state" self._get_buddy = get_buddy # Converts handle to Buddy object - - self.ordered_bus_names = [] - self.tube.watch_participants(self.participant_change_cb) def participant_change_cb(self, added, removed): self._logger.debug('Adding participants: %r' % added) self._logger.debug('Removing participants: %r' % type(removed)) - for handle, bus_name in added: buddy = self._get_buddy(handle) if buddy is not None: self._logger.debug('Buddy %s was added' % buddy.props.nick) - for handle in removed: buddy = self._get_buddy(handle) if buddy is not None: self._logger.debug('Buddy %s was removed' % buddy.props.nick) - 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()] + self.tube.add_signal_receiver(self.hello_cb, 'Hello', IFACE, + path=PATH, sender_keyword='sender') else: self._logger.debug('Hello, everyone! What did I miss?') self.Hello() @@ -278,31 +258,24 @@ class HelloTube(ExportedGObject): """Say Hello to whoever else is in the tube.""" self._logger.debug('I said Hello.') - @method(dbus_interface=IFACE, in_signature='as', out_signature='') - def World(self, bus_names): + @method(dbus_interface=IFACE, in_signature='s', out_signature='') + def World(self, game_state): """To be called on the incoming XO after they Hello.""" - if not 1 or self.helloworld: # XXX remove 1 + if not self.helloworld: self._logger.debug('Somebody said World.') - self.ordered_bus_names = bus_names + self.helloworld = game_state # now I can World others self.add_hello_handler() - - #buddy = self._get_buddy(self.tube.bus_name_to_handle[bus_names[0]]) else: 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') - def hello_cb(self, sender=None): """Somebody Helloed me. World them.""" + if sender == self.tube.get_unique_name(): + # sender is my bus name, so ignore my own signal + return self._logger.debug('Newcomer %s has joined', sender) - self.ordered_bus_names.append(sender) - 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, + game_state = str(time.time()) # Something to send for demo + self.tube.get_object(sender, PATH).World(game_state, dbus_interface=IFACE) - - |