Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorgan 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)
commit780d166e7cd86d449e0caafbbf8154c334aaaaf5 (patch)
tree4284a9c89abdeb4e7896fcfe5dd60cc215393ec0
parent80546e6919b0b22095440ba3324a8a39b3dc3f73 (diff)
Code cleanup, remove unnecessary ordered_bus_names stuff
-rw-r--r--activity.py55
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)
-
-