]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/include/plaqui/server/documentacion.h
Se borran los test porque estan desactualizados y ni siquiera compilan.
[z.facultad/75.42/plaqui.git] / Server / include / plaqui / server / documentacion.h
index 2d022e478a581cd365b46f45db16b7f262faf032..2b268ec845ae35438303205739fef5e0ea8e0c74 100644 (file)
@@ -1,6 +1,6 @@
 /** \page page_server PlaQui Server
 
 /** \page page_server PlaQui Server
 
-\section page_server_general Descripción General
+\section page_server_general Descripción General.
        El servidor está dividido en 2 módulos que provean 2 servicios diferentes.
 
        \subsection page_server_general_control Módulo de Control.
        El servidor está dividido en 2 módulos que provean 2 servicios diferentes.
 
        \subsection page_server_general_control Módulo de Control.
                Este módulo está implementado por las clases PlaQui::Server::ControlServer
                y PlaQui::Server::ControlClient.
 
                Este módulo está implementado por las clases PlaQui::Server::ControlServer
                y PlaQui::Server::ControlClient.
 
+               \subsubsection page_server_general_control_http Ventajas del protocolo HTTP.
+                       Las ventajas de montar el protocolo del servidor sobre el protocolo
+                       HTTP son muchas. Las más destacables son las más obvias.
+
+                       Al usar el protocolo HTTP se puede controlar el servidor con
+                       cualquier navegador web. Al ser las respuestas archivos XML es
+                       fácil agregar hojas de estilo XSLT para convertirlas en HTML y
+                       transformar un navegador web con capacidad de procesar hojas XSLT
+                       (como Mozilla) en un cliente casi con las mismas capacidades y
+                       facilidad de uso que uno hecho especialmente para PlaQui.
+
+                       Otra ventaja importante es que muchos lugares sin acceso real a
+                       Internet tienen acceso a un proxy HTTP, por lo que la accesibilidad
+                       del servicio se vuelve muy fácil incluso en redes muy protegidas.
+
        \subsection page_server_general_transmision Módulo de Transmisión.
                Este módulo se encarga de transmitir la simulación en tiempo real por UDP
                (como si fuera un video). Comienza luego de que el módulo de control recibe
        \subsection page_server_general_transmision Módulo de Transmisión.
                Este módulo se encarga de transmitir la simulación en tiempo real por UDP
                (como si fuera un video). Comienza luego de que el módulo de control recibe
@@ -78,8 +93,8 @@
                <table>
                        <tr><th>Comando</th><th>Descripción</th><th>Respuesta</th></tr>
                        <tr>
                <table>
                        <tr><th>Comando</th><th>Descripción</th><th>Respuesta</th></tr>
                        <tr>
-                               <td><tt>status</tt></td>
-                               <td>Obtiene estado general del servidor.</td>
+                               <td><tt>info</tt></td>
+                               <td>Obtiene información sobre el servidor.</td>
                                <td>Cantidad de plantas, conexiones, transmisiones, versión,
                                    uptime, etc.</td>
                        </tr>
                                <td>Cantidad de plantas, conexiones, transmisiones, versión,
                                    uptime, etc.</td>
                        </tr>
                                <td>Nada.</td>
                        </tr>
                </table>
                                <td>Nada.</td>
                        </tr>
                </table>
-               \note Los nombres entre <tt>[</tt> y <tt>]</tt> denotan un argumento.
+               \note Los nombres entre <tt>[</tt> y <tt>]</tt> representan un argumento.
 
        \subsection page_server_protocolo_transmision Comandos para una Transmisión.
                Todos los comandos de transmisiones comienzan con <tt>/transmission/</tt>
 
        \subsection page_server_protocolo_transmision Comandos para una Transmisión.
                Todos los comandos de transmisiones comienzan con <tt>/transmission/</tt>
                                    etc).</td>
                        </tr>
                        <tr>
                                    etc).</td>
                        </tr>
                        <tr>
-                               <td><tt>start/[plant]/[host]/[port]</tt></td>
-                               <td>Comienza la transmisión de la planta [plant] al [host]
+                               <td><tt>start/[pl]/[host]/[port]</tt></td>
+                               <td>Comienza la transmisión de la planta [pl] al [host]
                                    en el puerto [port].</td>
                                <td>Nada.</td>
                        </tr>
                                    en el puerto [port].</td>
                                <td>Nada.</td>
                        </tr>
                                <td>Nada.</td>
                        </tr>
                </table>
                                <td>Nada.</td>
                        </tr>
                </table>
-               \note Los nombres entre <tt>[</tt> y <tt>]</tt> denotan un argumento.
+               \note Los nombres entre <tt>[</tt> y <tt>]</tt> representan un argumento.
 
        \subsection page_server_protocolo_planta Comandos para una Planta.
                Todos los comandos de plantas comienzan con <tt>/plant/</tt> y continúan con
 
        \subsection page_server_protocolo_planta Comandos para una Planta.
                Todos los comandos de plantas comienzan con <tt>/plant/</tt> y continúan con
                                    corriendo o no, uptime, cantidad de elementos,etc).</td>
                        </tr>
                        <tr>
                                    corriendo o no, uptime, cantidad de elementos,etc).</td>
                        </tr>
                        <tr>
-                               <td><tt>get/[planta]</tt></td>
-                               <td>Obtiene la planta de nombre [planta].</td>
+                               <td><tt>get/[pl]</tt></td>
+                               <td>Obtiene la planta de nombre [pl].</td>
                                <td>El mismo archivo que se crea en el Constructor.</td>
                        </tr>
                        <tr>
                                <td>El mismo archivo que se crea en el Constructor.</td>
                        </tr>
                        <tr>
-                               <td><tt>set/[planta]/[elem]/[prop]/[val]</tt></td>
-                               <td>Cambia la propiedad [prop] del elemento [elem], asignándole
-                                   el valor [val] a planta de nombre [planta].</td>
+                               <td><tt>set/[pl]/[el]/[pr]/[val]</tt></td>
+                               <td>Cambia la propiedad [pr] del elemento [el], asignándole
+                                   el valor [val] a planta de nombre [pl].</td>
                                <td>Nada.</td>
                        </tr>
                        <tr>
                                <td>Nada.</td>
                        </tr>
                        <tr>
-                               <td><tt>set_frequency/[planta]/[vecesxseg]</tt></td>
+                               <td><tt>set_frequency/[pl]/[hz]</tt></td>
                                <td>Cambia la frecuencia de refresco de la simulación de la
                                <td>Cambia la frecuencia de refresco de la simulación de la
-                                   planta de nombre [planta] a [vecesxseg] veces por
-                                   segundo. Si [vecesxseg] es cero ("0"), se usa la frecuencia
-                                   de refresco por omisión del servidor.</td>
+                                   planta de nombre [pl] a [hz] veces por segundo. Si [hz]
+                                   es cero ("0"), se usa la frecuencia de refresco por
+                                   omisión del servidor.</td>
                                <td>Nada.</td>
                        </tr>
                        <tr>
                                <td>Nada.</td>
                        </tr>
                        <tr>
-                               <td><tt>start/[planta]</tt></td>
+                               <td><tt>start/[pl]</tt></td>
                                <td>Reanuda (o comienza) la simulación de la planta de nombre
                                <td>Reanuda (o comienza) la simulación de la planta de nombre
-                                   [planta].</td>
+                                   [pl].</td>
                                <td>Nada.</td>
                        </tr>
                        <tr>
                                <td>Nada.</td>
                        </tr>
                        <tr>
-                               <td><tt>stop/[planta]</tt></td>
+                               <td><tt>stop/[pl]</tt></td>
                                <td>Pausa la simulación de la planta de nombre
                                <td>Pausa la simulación de la planta de nombre
-                                   [planta].</td>
+                                   [pl].</td>
                                <td>Nada.</td>
                        </tr>
                        <tr>
                                <td>Nada.</td>
                        </tr>
                        <tr>
-                               <td><tt>remove/[planta]</tt></td>
+                               <td><tt>remove/[pl]</tt></td>
                                <td>Finaliza la simulación de la planta de nombre
                                <td>Finaliza la simulación de la planta de nombre
-                                   [planta] eliminandola del servidor.</td>
+                                   [pl] eliminandola del servidor.</td>
                                <td>Nada.</td>
                        </tr>
                </table>
                                <td>Nada.</td>
                        </tr>
                </table>
-               \note Los nombres entre <tt>[</tt> y <tt>]</tt> denotan un argumento.
+               \note Los nombres entre <tt>[</tt> y <tt>]</tt> representan un argumento.
+
+\section page_server_respuesta Respuestas del Módulo de Control.
+       Las respuestas del servidor, como se dijo anteriormente, son respuestas HTTP, cuyo
+       cuerpo es un archivo XML. Este archivo se compone de un <em>tag</em> XML
+       <tt>plaqui-response</tt> y tiene como atributos obligatorios <tt>code</tt> (indica
+       el código de respuesta, para saber si se realizó bien el comando) y <tt>version</tt>
+       (indica la versión del formato del archivo XML, para preveer la posibilidad de que
+        cambie en futuras versiones). También tiene un atributo opcional <tt>description</tt>
+       que permite agregar una descripción sobre la respuesta, útil para observar respuestas
+       con un navegador u otro cliente no específico. El <em>tag</em>plaqui-response</em>
+       puede tener un contenido, en caso de que la respuesta necesite enviar información al
+       cliente (como al obtener una planta o una lista). El contenido es a su vez XML y en
+       el caso de la obtención de una planta tiene el mismo formato que el utilizado por el
+       Constructor.
 
 \section page_server_uso Modo de uso.
 
 \section page_server_uso Modo de uso.
-       Para utilizar el servidor es necesario disponer de un archivo XML de planta
-       (por ejemplo, generado por el Constructor).
+       \subsection page_server_uso_inicio Inicio del servidor
+               Para iniciar el servidor es necesario disponer de un archivo XML de
+               planta (por ejemplo, generado por el Constructor).
+
+               Invocación del servidor:
+               \verbatim ./plaqui-server [archivo] [puerto] \endverbatim
+
+               Ambos argumentos son opcionales. El primero, <tt>[archivo]</tt>, es la
+               ubicación del archivo con la descripción de la planta a simular (por omisión
+               <tt>planta.xml</tt>). El segundo, <tt>[puerto]</tt>, es el puerto en el cual
+               se van a atender las peticiones al servidor (por omisión 7522).
+
+       \subsection page_server_uso_estado Estado del servidor.
+               Mientras el servidor se ejecuta, va imprimiendo en la salida estándar su
+               estado. Se imprime cada vez que llega una conexión entrante y cada vez que
+               se detecta un error.
+
+               Otro tipo de información del estado del servidor puede ser obtenida desde
+               el cliente a través del comando <tt>/server/info</tt> (ver
+               \ref page_server_protocolo_general).
 
 
-       Invocación del servidor:
-       \verbatim ./plaqui-server [planta.xml] [puerto] \endverbatim
+               \note Los errores se imprimen en la salida de error, no en la salida
+                     estándar.
 
 
-       Ambos argumentos son opcionales. El primero, <tt>[planta.xml]</tt>, es la
-       ubicación del archivo con la descripción de la planta a simular (por omisión
-       <tt>prueba.xml</tt>). El segundo, <tt>[puerto]</tt>, es el puerto en el cual
-       se van a atender las peticiones al servidor (por omisión 7522).
+       \subsection page_server_uso_fin Finalización del servidor.
+               Hay varias formas de finalizar el servidor:
+               - Enviando una señal de interrupción (<tt>SIGINT</tt>), por ejemplo,
+                 presionando la combinación de teclas <tt>CTRL-C</tt>.
+               - Enviando una señal de salida (<tt>SIGQUIT</tt>) o de terminación
+                 (<tt>SIGTERM</tt>), por ejemplo, a través del comando
+                 <tt>kill(1)</tt>.
+               - Enviando un comando <tt>/server/stop</tt> desde un cliente (ver
+                 \ref page_server_protocolo_general).
+
+               Cualquiera de estos métodos es válido y finaliza el servidor de forma
+               correcta.
 
 */
 
 */
+
+/** \namespace PlaQui::Server
+
+Infrastructura cliente-servidor para PlaQui.
+
+Bajo este espacio de nombres (namespace) se encuentran todas las clases para la
+comunicación cliente-servidor de PlaQui. Esto no incluye la interfaz gráfica del
+cliente.
+
+*/
+