[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