[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