[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