[pypy-svn] r42009 - in pypy/dist/pypy/lib/distributed: . demo

fijal at codespeak.net fijal at codespeak.net
Thu Apr 12 21:45:27 CEST 2007


Author: fijal
Date: Thu Apr 12 21:45:27 2007
New Revision: 42009

Modified:
   pypy/dist/pypy/lib/distributed/demo/sockdemo.py
   pypy/dist/pypy/lib/distributed/socklayer.py
Log:
Fix demo.
Long laying in WC checkin


Modified: pypy/dist/pypy/lib/distributed/demo/sockdemo.py
==============================================================================
--- pypy/dist/pypy/lib/distributed/demo/sockdemo.py	(original)
+++ pypy/dist/pypy/lib/distributed/demo/sockdemo.py	Thu Apr 12 21:45:27 2007
@@ -1,5 +1,8 @@
 
 from distributed import RemoteProtocol, remote_loop
+from distributed.socklayer import Finished, socket_listener, socket_connecter
+
+PORT = 12122
 
 class X:
     def __init__(self, z):
@@ -10,23 +13,24 @@
 
     def raising(self):
         1/0
-        
+
 x = X(3)
 
 def remote():
-    from distributed.socklayer import socket_listener
-    send, receive = socket_listener()
+    send, receive = socket_listener(address=('', PORT))
     remote_loop(RemoteProtocol(send, receive, globals()))
 
 def local():
-    from distributed.socklayer import socket_connecter
-    send, receive = socket_connecter(('localhost', 12122))
+    send, receive = socket_connecter(('localhost', PORT))
     return RemoteProtocol(send, receive)
 
 import sys
 if __name__ == '__main__':
     if len(sys.argv) > 1 and sys.argv[1] == '-r':
-        remote()
+        try:
+            remote()
+        except Finished:
+            print "Finished"
     else:
         rp = local()
         x = rp.get_remote("x")

Modified: pypy/dist/pypy/lib/distributed/socklayer.py
==============================================================================
--- pypy/dist/pypy/lib/distributed/socklayer.py	(original)
+++ pypy/dist/pypy/lib/distributed/socklayer.py	Thu Apr 12 21:45:27 2007
@@ -11,6 +11,9 @@
     if TRACE:
         print >>sys.stderr, msg
 
+class Finished(Exception):
+    pass
+
 class SocketWrapper(object):
     def __init__(self, conn):
         self.buffer = ""
@@ -19,7 +22,10 @@
     def receive(self):
         msg, self.buffer = decodemessage(self.buffer)
         while msg is None:
-            self.buffer += self.conn.recv(8192)
+            data = self.conn.recv(8192)
+            if not data:
+                raise Finished()
+            self.buffer += data
             msg, self.buffer = decodemessage(self.buffer)
         assert msg[0] == 'c'
         trace("received %s" % msg[1])



More information about the Pypy-commit mailing list