El sistema de comunicación entre los componentes está basado en el envío y recepción de mensajes.
Cada mensaje de la red utiliza las misma estructura de almacenamiento:
estructura general
Cada celda contiene una cadena de texto terminada en \n\0, de forma que el envío y recepción de mensajes es muy sencillo y flexible.
Independientemente de la naturaleza de cada mensaje, todos respetan la siguiente composición:
- tipo de mensaje: identifica el objetivo de mensaje
- cantidad de cadenas: especifica cuantas cadenas de textos se adjuntan al mensaje.
- cadenas: (opcional), una serie de cadenas asociadas al mensaje.
A diferencia de los protocolo binarios, este tipo de mensajes sacrifican parte de la eficiencia del programa a costas de mejorar su accesibilidad y compatibilidad. Tenga en cuenta que esta es una solución muy viable, no en vano el protocolo utilizado en la web, http, utiliza un esquema basado en texto.
La siguiente figura ejemplifica la composición de un mensaje tipo MSG_OK, utilizado con frecuencia en varias partes del programa. Puede consultar en detalle los tipo de mensaje mas abajo.
mensaje MSG_OK
- Nota:
- Si bien el mensaje utiliza una cadena con valor numérico, desde el programa no será necesario manipular o convertir estos valores, para ello existen las constantes de mensaje y las funciones del archivo socket.c
- Tipo: MSG_NULL
- Origen: -
- Destino: -
- Descripción: Se utiliza como código de error para indicar un fallo en la conexión.
- Cadenas: 0
- Posibles respuestas: desconectar el socket asociado o terminar el programa
- Tipo: MSG_OK
- Origen: -
- Destino: -
- Descripción: Se aceptó el pedido anterior
- Cadenas: 0
- Posibles respuestas: -
- Tipo: MSG_LOGIN
- Origen: Login
- Destino: Servidor
- Descripción: El usuario ingresó su legajo y contraseña solicitando la habilitación de una sesión.
- Cadenas: 2, legajo y contraseña
- Posibles respuestas: MSG_SESION o MSG_ERROR
- Tipo: MSG_ERROR
- Origen: -
- Destino: -
- Descripción: Se notifica un error
- Cadenas: 1, el motivo del error
- Posibles respuestas: mostrar un cuadro de dialogo o cerrar el programa
- Tipo: MSG_ACTUALIZAR
- Origen: Login
- Destino: Servidor
- Descripción: Se solicita una renovación de sesión
- Cadenas: 0
- Posibles respuestas: MSG_ACTUALIZA_SESION o MSG_ERROR
- Tipo: MSG_SESION
- Origen: Servidor
- Destino: Login
- Descripción: Se otorga la primer de sesión uso
- Cadenas: 1, cantidad de segundos asignados para la sesión
- Posibles respuestas: Login ejecuta su gestor de ventanas.
- Tipo: MSG_ACTUALIZA_SESION
- Origen: Administrador
- Destino: Login
- Descripción: Inicia o extiende la sesión de uso en un equipo
- Cadenas: 2, el identificador del equipo y la cantidad de tiempo asignado.
- Posibles respuestas: el Servidor reenvía el mensaje al equipo solicitado.
- Tipo: MSG_ACTUALIZA_SESION
- Origen: Servidor
- Destino: Login
- Descripción: Se otorga permiso para actualizar una sesión
- Cadenas: 1, cantidad de segundos asignados para la sesión
- Posibles respuestas: -
- Tipo: MSG_SUPER_SESION
- Origen: Administrador
- Destino: Servidor
- Descripción: Habilita el uso ilimitado de un equipo en la red
- Cadenas: 1, el identificador de equipo
- Posibles respuestas: El programa Servidor reenvía la órden al equipo solicitado.
- Tipo: MSG_SUPER_SESION
- Origen: Servidor
- Destino: Login
- Descripción: Habilita el uso ilimitado de un equipo en la red
- Cadenas: 0
- Posibles respuestas: si Login está en sesión se deshabilita el reloj. En cambio, si no está en sesión, se ejecuta el gestor de ventanas y luego se deshabilita el reloj.
- Tipo: MSG_LOGOUT
- Origen: Administrador
- Destino: Servidor
- Descripción: Se ordena que termine la sesión de un usuario
- Cadenas: 1, identificador del equipo
- Posibles respuestas: Reenviar el mensaje al equipo seleccionado
- Tipo: MSG_REINICIAR
- Origen: Administrador
- Destino: Servidor
- Descripción: Se ordena reiniciar un equipo de la red
- Cadenas: 1, identificador del equipo
- Posibles respuestas: Reenviar el mensaje al equipo seleccionado
- Tipo: MSG_APAGAR
- Origen: Administrador
- Destino: Servidor
- Descripción: Se ordena apagar un equipo de la red
- Cadenas: 1, identificador del equipo
- Posibles respuestas: Reenviar el mensaje al equipo seleccionado
- Tipo: MSG_MENSAJE
- Origen: Administrador
- Destino: Servidor
- Descripción: Se envía una notificación al usuario
- Cadenas: 1, identificador del equipo
- Posibles respuestas: Reenviar el mensaje al equipo seleccionado
- Tipo: MSG_GETDATOS
- Origen: Administrador
- Destino: Servidor
- Descripción: Se solicita un listado completo de equipos conectados
- Cadenas: 1, identificador del equipo
- Posibles respuestas: MSG_DATOS
- Tipo: MSG_DATOS
- Origen: Servidor
- Destino: Administrador
- Descripción: Se responde con el listado de clientes
- Cadenas: 1, cantidad de equipos conectados
- Posibles respuestas: ninguna, se reenvía un mensaje MSG_USUARIO por cada usuario conectado
- Tipo: MSG_USUARIO
- Origen: Servidor
- Destino: Administrador
- Descripción: Se notifica el estado de un equipo
- Cadenas: 4, identificador de equipo y, en caso de operar una sesión: usuario, cantidad de sesiones utilizadas y el horario de inicio
- Posibles respuestas: ninguna, se reenvía un mensaje MSG_USUARIO por cada usuario conectado
Generado con Doxygen,
versión 1.4.2