[pypy-svn] r28673 - in pypy/dist/pypy/translator/js2/proxy/testme: . static/javascript templates

ericvrp at codespeak.net ericvrp at codespeak.net
Sun Jun 11 16:01:52 CEST 2006


Author: ericvrp
Date: Sun Jun 11 16:01:50 2006
New Revision: 28673

Added:
   pypy/dist/pypy/translator/js2/proxy/testme/servermessage.py
      - copied, changed from r28644, pypy/dist/pypy/translator/js2/proxy/testme/controllers.py
   pypy/dist/pypy/translator/js2/proxy/testme/static/javascript/bnb.js
   pypy/dist/pypy/translator/js2/proxy/testme/templates/bnb.kid
Removed:
   pypy/dist/pypy/translator/js2/proxy/testme/templates/welcome.kid
Modified:
   pypy/dist/pypy/translator/js2/proxy/testme/controllers.py
   pypy/dist/pypy/translator/js2/proxy/testme/templates/master.kid
Log:
intermediate (weekend) checkin, includes a little javascript to test the proxy


Modified: pypy/dist/pypy/translator/js2/proxy/testme/controllers.py
==============================================================================
--- pypy/dist/pypy/translator/js2/proxy/testme/controllers.py	(original)
+++ pypy/dist/pypy/translator/js2/proxy/testme/controllers.py	Sun Jun 11 16:01:50 2006
@@ -6,132 +6,74 @@
 import socket
 import urllib
 import re
-
-
-class SessionData:
-
-    def broadcast_port(self, *values):
-        print 'MESSAGE (IGNORE):broadcast_port', values
-
-    def ping(self):
-        print 'MESSAGE:ping'
-
-    def def_playfield(self, width, height, backcolor, FnDesc):
-        print 'MESSAGE:def_playfield width=%s, height=%s, backcolor=%s, FnDesc=%s' %\
-            (width, height, backcolor, FnDesc)
-
-    def def_bitmap(self, code, data, *rest):
-        print 'MESSAGE:def_bitmap code=%s, data=%d bytes, colorkey=%s' %\
-            (code, len(data), rest)
-        bitmap_filename = 'testme/static/images/bitmap%d.ppm' % code
-        f = open(bitmap_filename, 'wb')
-        f.write(zlib.decompress(data))
-        f.close()
-
-        #TODO: use in memory (don't save ppm first)
-        bitmap = PIL.Image.open(bitmap_filename)
-        gif_bitmap_filename = 'testme/static/images/bitmap%d.gif' % code
-        bitmap.save(gif_bitmap_filename)
-
-    def def_icon(self, bitmap_code, code, x,y,w,h, *rest):
-        print 'MESSAGE:def_icon bitmap_code=%s, code=%s, x=%s, y=%s, w=%s, h=%s, alpha=%s' %\
-            (bitmap_code, code, x,y,w,h, rest)
-
-        #TODO: use in memory (don't save ppm first)
-        bitmap_filename = 'testme/static/images/bitmap%d.gif' % bitmap_code
-        icon_filename = 'testme/static/images/icon%d.gif' % code
-        icon    = PIL.Image.open(bitmap_filename)
-        box     = (x, y, x+w, y+h)
-        region  = icon.crop(box)
-        region.save(icon_filename)
-        print 'SAVED:', icon_filename
-
-        filename = '../static/images/icon%d.gif' % code
-        return dict(type='def_icon', code=code, filename=filename)
-
-    MESSAGES = {
-        MSG_BROADCAST_PORT : broadcast_port,
-        MSG_PING           : ping,
-        MSG_DEF_PLAYFIELD  : def_playfield,
-        MSG_DEF_BITMAP     : def_bitmap,
-        MSG_DEF_ICON       : def_icon,
-        }
-
-    def __init__(self):
-        self.socket = None
-        self.data   = ''
-
-    def handleServerMessage(self, *values):
-        #print 'RECEIVED MESSAGE:%s(%d)' % (values[0], len(values[1:]))
-        fn = self.MESSAGES.get(values[0])
-        if fn:
-            return fn(self, *values[1:])
-        else:
-            print "UNKNOWN MESSAGE:", values
-            return dict(type='unknown', values=values)
+from servermessage import ServerMessage, log
 
 
 class Root(controllers.Root):
 
-    _sessionData = {}
+    _serverMessage = {}
     n_header_lines = 2
 
     host = 'localhost'
     port = re.findall('value=".*"', urllib.urlopen('http://%s:8000' % host).read())[0]
     port = int(port[7:-1])
     
-    def sessionData(self):
+    def serverMessage(self):
         sessionid = session['_id']
-        if sessionid not in self._sessionData:
-            self._sessionData[sessionid] = SessionData()
-        return self._sessionData[sessionid]
+        if sessionid not in self._serverMessage:
+            self._serverMessage[sessionid] = ServerMessage()
+        return self._serverMessage[sessionid]
 
     def sessionSocket(self, close=False):
-        d = self.sessionData()
-        if d.socket is None:
-            d.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            d.socket.connect((self.host, self.port))
+        sm = self.serverMessage()
+        if sm.socket is None:
+            sm.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            sm.socket.connect((self.host, self.port))
             #XXX todo: session.socket.close() after a timeout
-        return d.socket
+        return sm.socket
+
+    @expose(html='testme.templates.bnb')
+    def index(self):
+        return dict()
 
     @expose(format='json')
     def send(self, data=message(CMSG_PING)):
         self.sessionSocket().send(data)
-        print 'SENT:' + repr(data)
+        log('SENT: %s' % repr(data))
         return self.recv()
 
     @expose(format='json')
     def recv(self):
         #XXX hangs if not first sending a ping!
-        d = self.sessionData()
+        sm   = self.serverMessage()
         size = 1024
-        data = d.data + self.sessionSocket().recv(size)
+        data = sm.data + self.sessionSocket().recv(size)
         while self.n_header_lines > 0 and '\n' in data:
             self.n_header_lines -= 1
             header_line, data = data.split('\n',1)
-            print 'RECEIVED HEADER LINE: %s' % header_line
+            log('RECEIVED HEADER LINE: %s' % header_line)
         
-        #print 'RECEIVED DATA CONTAINS %d BYTES' % len(data)
+        #log('RECEIVED DATA CONTAINS %d BYTES' % len(data))
         messages = []
         while data:
             values, data = decodemessage(data)
             if not values:
                 break  # incomplete message
-            messageOutput = d.handleServerMessage(*values)
+            messageOutput = sm.dispatch(*values)
             if messageOutput:
                 messages.append(messageOutput)
-        d.data = data
-        #print 'RECEIVED DATA REMAINING CONTAINS %d BYTES' % len(data)
+        sm.data = data
+        #log('RECEIVED DATA REMAINING CONTAINS %d BYTES' % len(data))
 
-        print 'MESSAGES:', messages
+        log('MESSAGES:%s' % messages)
         return dict(messages=messages)
 
     @expose(format='json')
     def close(self):
         sessionid = session['_id']
-        d = self.sessionData()
-        if d.socket is not None:
-            d.socket.close()
-        del self._sessionData[sessionid]
+        sm = self.serverMessage()
+        if sm.socket is not None:
+            sm.socket.close()
+        del self._serverMessage[sessionid]
         return dict()
 

Added: pypy/dist/pypy/translator/js2/proxy/testme/static/javascript/bnb.js
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js2/proxy/testme/static/javascript/bnb.js	Sun Jun 11 16:01:50 2006
@@ -0,0 +1,20 @@
+//note: we assume Mochikit is already included
+
+function sendToServer() { //XXX for now, just get (proxy) server data
+    loadJSONDoc('send').addCallback(
+        function (json_doc) {
+            var messages = json_doc.messages;
+            for (var i in messages) {
+                var message = messages[i];
+                var s = message.type;
+                if (message.type == 'def_icon') {   //code, filename, width, height
+                    s += ', filename=' + message.filename;
+                }
+                document.body.firstChild.nodeValue = s;
+            }
+            callLater(0.01, sendToServer);  //again...
+        }
+    );
+}
+
+callLater(0.01, sendToServer);

Added: pypy/dist/pypy/translator/js2/proxy/testme/templates/bnb.kid
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/js2/proxy/testme/templates/bnb.kid	Sun Jun 11 16:01:50 2006
@@ -0,0 +1,11 @@
+<html>
+    <head>
+        <script src="${std.tg_js}/MochiKit.js"/>
+        <script src="static/javascript/bnb.js"/>
+    </head>
+    <title>
+        BnB - the game
+    </title>
+    <body>
+    </body>
+</html>

Modified: pypy/dist/pypy/translator/js2/proxy/testme/templates/master.kid
==============================================================================
--- pypy/dist/pypy/translator/js2/proxy/testme/templates/master.kid	(original)
+++ pypy/dist/pypy/translator/js2/proxy/testme/templates/master.kid	Sun Jun 11 16:01:50 2006
@@ -8,10 +8,6 @@
 </head>
 
 <body py:match="item.tag=='{http://www.w3.org/1999/xhtml}body'">
-    <!-- p align="center"><img src="http://www.turbogears.org/tgheader.png"/></p -->
-    
-    <div py:if="tg_flash" class="flash" py:content="tg_flash"></div>
-    
     <div py:replace="item[:]"/>
 </body>
 </html>



More information about the Pypy-commit mailing list