~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to doc/dev/architecture.rst

  • Committer: William Grant
  • Date: 2010-01-29 03:49:58 UTC
  • Revision ID: grantw@unimelb.edu.au-20100129034958-mkhhb98543bf1idm
Expand console architecture documentation to explain the rather odd communication method.

Show diffs side-by-side

added added

removed removed

Lines of Context:
192
192
==============
193
193
 
194
194
IVLE provides a web based programming console, exposing similar features to 
195
 
Python's command line console. It is built around python script 
196
 
:file:`services/python-console` which opens up a socket to which `JSON`_ 
197
 
encoded chat requests can be made. A new console is typically from launched on 
198
 
demand by the web client to the HTTP API, which in turn calls the wrapper 
199
 
class :class:`ivle.console.Console` to start a new console in the user's jail.
 
195
Python's command line console. It is built around the
 
196
:file:`services/python-console` script, which opens up a socket on a random
 
197
port to which `JSON`_ encoded chat requests can be made.
 
198
 
 
199
A new console is typically launched on demand by the web client to the HTTP
 
200
API, which in turn calls the wrapper class :class:`ivle.console.Console` to
 
201
start a new console in the user's jail.
 
202
 
 
203
Subsequent requests from the same in-browser console connect to the existing
 
204
console process. This is achieved by storing a string on the client which
 
205
identifies the server address and port. The client then makes requests
 
206
through the load balancer, sending this string through to an arbitrary slave
 
207
which forwards the request to the identified console.
 
208
 
 
209
This means that all slaves need access to all ports on every other slave.
200
210
 
201
211
.. _JSON: http://json.org
202
212