[pypy-svn] r42018 - pypy/extradoc/talk/rupy2007/demos
fijal at codespeak.net
fijal at codespeak.net
Fri Apr 13 09:37:46 CEST 2007
Author: fijal
Date: Fri Apr 13 09:37:45 2007
New Revision: 42018
Added:
pypy/extradoc/talk/rupy2007/demos/
pypy/extradoc/talk/rupy2007/demos/listserver.py
pypy/extradoc/talk/rupy2007/demos/myproxy.py
Log:
Add a http server + list over proxy demo
Added: pypy/extradoc/talk/rupy2007/demos/listserver.py
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/rupy2007/demos/listserver.py Fri Apr 13 09:37:45 2007
@@ -0,0 +1,31 @@
+from pypy.translator.js.lib import server
+from py.__.green.server.httpserver import GreenHTTPServer
+import random
+
+class Root(server.Collection):
+ def __init__(self):
+ self.l = range(10)
+ random.shuffle(self.l)
+
+ def index(self):
+ return repr(self.l)
+ index.exposed = True
+
+ def getitem(self, item):
+ return str(self.l[int(item)])
+ getitem.exposed = True
+
+ def setitem(self, item, value):
+ self.l[int(item)] = int(value)
+ return ""
+ setitem.exposed = True
+
+class Handler(server.NewHandler):
+ application = Root()
+
+if __name__ == '__main__':
+ addr = ('', 8010)
+ httpd = server.create_server(server_address=addr, handler=Handler,
+ server=GreenHTTPServer)
+ httpd.serve_forever()
+
Added: pypy/extradoc/talk/rupy2007/demos/myproxy.py
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/rupy2007/demos/myproxy.py Fri Apr 13 09:37:45 2007
@@ -0,0 +1,22 @@
+import tputil
+import urllib
+
+class ProxyController(object):
+ def __getitem__(self, item):
+ data = urllib.urlencode({'item':item})
+ return int(urllib.urlopen("http://localhost:8010/getitem?%s" % data,
+ ).read())
+
+ def __setitem__(self, item, value):
+ data = urllib.urlencode({'item':item, 'value':value})
+ urllib.urlopen("http://localhost:8010/setitem?%s" % data,
+ data=data).read()
+
+ def __repr__(self):
+ return urllib.urlopen("http://localhost:8010/").read()
+
+def proxy_controller(oper):
+ return oper.delegate()
+
+l = tputil.make_proxy(proxy_controller, list, ProxyController())
+
More information about the Pypy-commit
mailing list