Practica2 Comunicacion FIFO - raquelcedazo/sistemas-informaticos-industriales GitHub Wiki

Práctica 2: Comunicación mediante tuberías con nombre (FIFO)

Antes de comenzar

Antes de comenzar con el desarrollo de la práctica 2, debes haber creado una etiqueta en el repositorio con el mensaje 'Fin de la práctica 1' para marcar el hito.

A continuación, para la realización de la práctica 2, crea una rama y salta a dicha rama:

$ git branch practica2
$ git checkout practica2

Objetivo

El objetivo principal de esta práctica es aprender a crear y gestionar ramas en Git y añadir un nuevo proceso que se comunique con el juego mediante una tubería con nombre (FIFO).

Para ello, se desarrollará un programa logger que recibirá información del juego tenis cada vez que uno de los jugadores marque un punto.

tenis_practica2.png

Descripción del programa logger

Se pide implementar un programa logger y los cambios necesarios en el código de la práctica 2 para que desde el juego se envíe al logger el nombre y el número de puntos que lleva un jugador en el momento que termina un tanto. Para ello hay que seguir los siguientes pasos:

  1. Copia el programa logger.cpp de la carpeta external a tu carpeta src/. Este archivo es un esquema, debes completarlo.

  2. El programa logger es el encargado de crear la tubería (mkfifo), abrirla en modo lectura (open) y destruirla (close y unlink). Por tanto, el logger debe ser ejecutado antes que el tenis.

  3. El logger entra en un bucle infinito de recepción de datos (read) e imprime el mensaje por salida estándar.

  4. Añadir el identificador de la tubería como atributo de la clase Mundo definida en el programa tenis.

  5. Abrir la tubería (open) en modo escritura en el Init() de Mundo.

  6. Enviar los datos cuando se produzcan puntos por la tubería (write). Esto se debe hacer en el OnTimer() de Mundo.

  7. Cerrar la tubería adecuadamente (close en el destructor de Mundo).

Un ejemplo de traza de ejecución del logger podría ser:

Jugador 1 marca 1 punto, lleva un total de 1 puntos.
Jugador 2 marca 1 punto, lleva un total de 1 puntos.
Jugador 2 marca 1 punto, lleva un total de 2 puntos.

CMake: Modificar el CMakeLists.txt

Añade el nuevo ejecutable del logger con:


add_executable(logger logger.cpp)

Subir los cambios al repositorio

Una vez completado, haz commit y sube tu rama a Bitbucket:

$ git push origin practica2

Comprobar las ramas activas

Puedes hacerlo desde el menú Branches en Bitbucket o con:

$ git branch

Ejercicio propuesto

Se pide completar el código para hacer que tenis y logger terminen cuando algún jugador alcance 3 puntos.

## Finalización ##

Cuando hayas completado la práctica, crea una etiqueta para marcar el hito y combina la rama con la principal:


$ git checkout master
$ git merge practica2
$ git push origin master

Se pide modificar el fichero README para indicar las nuevas funcionalidades.