]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - docs/server.txt
Se agrega la propuesta en bruto de la estructura del server.
[z.facultad/75.42/plaqui.git] / docs / server.txt
1 vim: set ts=4 sw=4 tw=80:
2 $Id$
3
4 Propuesta de servidor v0.1:
5
6 El servidor estará dividido en 2 modulos que provean 2 servicios diferentes:
7 1) Módulo de control.
8         El módulo de control se basa en el protocolo TCP y se encarga de listar
9         los archivos de planta disponibles en el servidor, permitiendo cambiar
10         las propiedades de cada uno y conocer su estado en términos generales
11         (si se está simulando o no). Todo lo que sean comandos (abrir una
12         exclusa, llenar un tanque, etc) se realizan a través de este módulo.
13         El protocolo que maneja este modulo es un HTTP simplificado. Se aceptan
14         comandos simples (en un principio solo GET) a través de URLs.
15         Ejemplos:
16                 Obtiene lista de archivos:
17                         GET / HTTP/1.0
18                 Cierra la <exclusa1> de la planta <archivo>:
19                         GET /archivo/set/exclusa1?cerrar HTTP/1.0
20                 Pone el <caudal> de <canio1> en 3 l/s:
21                         GET /archivo/set/canio1?caudal=3 HTTP/1.0
22                 Comienza la simulación de la planta <archivo>:
23                         GET /archivo/start HTTP/1.0
24                 Empieza a transmitir a host:port la simulación de la planta <archivo>:
25                         GET /archivo/connect?host=localhost&port=1234 HTTP/1.0
26                 Deja de transmitir a host:port la simulación de la planta <archivo>:
27                         GET /archivo/disconnect?host=localhost&port=1234 HTTP/1.0
28
29         Los datos que envía este módulo están en formato XML, preferentemente con
30         un archivo de transformación XSLT (o como se llame :) para que pueda ser
31         visto en un browser cualquiera (que soporte esto, como Mozilla).
32
33 2) Módulo de simulación:
34         Este módulo se encarga de transmitir la simulación en tiempo real por UDP
35         (como si fuera un video). Comienza luego de que el módulo de control recibe
36         una petición de transmisión (con connect) y continúa transmitiendo (en un
37         thread propio) hasta que recibe un disconnect. Envia un archivo XML con el
38         estado de la planta.
39         En este caso no tiene sentido la XSLT porque no hay browsers HTTP que usen
40         UDP :).
41         
42 Opcionalmente se puede hacer un módulo de simulación sobre TCP, que sólo envíe
43 el estado actual de la planta en ese instante, o directamente implementarlo como
44 un comando del módulo de control para poder verlo en un browser. Aunque esto ya
45 sería más un cliente que un servidor :)