[gnome-games/sudoku-tube] First try to transfer the puzzle to the peer



commit 72cbb93bfd0897a38136b22bbd42c4f912e49e22
Author: Zhang Sen <zh jesse gmail com>
Date:   Mon Jun 29 20:56:49 2009 +0800

    First try to transfer the puzzle to the peer
    
    The receiver can get the game from the initiator, though very primitive

 gnome-sudoku/src/lib/main.py       |   14 +++++++++-----
 gnome-sudoku/src/lib/networking.py |   10 ++++++----
 2 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 624bf65..10b9183 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -459,10 +459,14 @@ class UI (gconf_wrapper.GConfWrapper):
                 self.gconf[k] = v
         self.player = self.gconf['player']
 
-    def _tube_received_cb(self, tube_conn):
-        game_server = tube_conn.get_object(object_path="/Game")
-        print "got reply from server: %s" % \
-                game_server.test("hi there from client")
+    def _get_server(self, bus):
+        return bus.get_object(object_path="/Game")
+
+    def _tube_received_cb(self, bus):
+        game_server = self._get_server(bus)
+        puzzle = str(game_server.get_puzzle())
+        logger.info("get puzzle from server: %s" % puzzle)
+        self._open_game(game_selector.NewOrSavedGameSelector.NEW_GAME, puzzle)
 
     def new_cb (self, *args):
         if self._close_current_game():
@@ -481,7 +485,7 @@ class UI (gconf_wrapper.GConfWrapper):
             logger.info("None selected")
 
     def _tube_open_cb(self, bus, obj_path):
-        """Called when the offered tube is open"""
+        """Called when the peer accepts our tube"""
         server = networking.GameServer(bus, obj_path, self)
         logger.info("server created")
 
diff --git a/gnome-sudoku/src/lib/networking.py b/gnome-sudoku/src/lib/networking.py
index 5e44935..ae8ebf2 100644
--- a/gnome-sudoku/src/lib/networking.py
+++ b/gnome-sudoku/src/lib/networking.py
@@ -10,11 +10,13 @@ class GameServer(dbus.service.Object):
     """Expose the game on dbus, so the others can listen to it"""
 
     server_interface = "org.gnome.Sudoku.server"
+
     def __init__(self, bus, obj_path, game):
         super(GameServer, self).__init__(bus, obj_path)
+        self.game = game
 
     @dbus.service.method(dbus_interface=server_interface,
-            in_signature='s', out_signature='s')
-    def test(self, message):
-        logger.info("get msg from client: %s" % message)
-        return "hello from server"
+            in_signature="", out_signature="s")
+    def get_puzzle(self):
+        logger.info("client is asking for the puzzle")
+        return self.game._game



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]