Comandos
    vcServer:       Servidor del Video Club
    vcClient:        Cliente del Video Club

Sintaxis
   vcServer   <fifo_file_name>
   vcClient    <fifo_file_name>

    Archivos Relacionados: videos.txt

Este sistema permite realizar programaciones a pedido. El servidor maneja una lista de videos con sus duraciones contenida en el archivo videos.txt. El formato de este archivo es
<nªvideo> <nombre><\t\t\t><horas:minutos>
El cliente tiene 4 opciones:
-  Listar los videos disponibles(videos.txt) : Se lista:
    Número del video        Nombre del Video        Duración

-  Ver los videos ya programados. Se lista:
    Número de video        Nombre del Video        Hora de salida al aire
   Además se indica cual está siendo transmitido actualmente. En este caso la salida indica en el aire
    hace XXX minutos en la columna Hora de salida al aire.

-  Programar un video: en este caso, el cliente debe ingresar además el número de video que desea ver, y la hora máxima en que             puede  ser programado

-  Salir

programa vcServer


El servidor cumple con las siguientes funciones:

- Lee el archivo video.txt y lo descompone en los nombres de los videos y las duraciones de cada video en segundos. Estos datos son guardados en arreglos
- Crea dos fifos, una para transmitir datos en la dirección cliente-servidor y la otra para transmitir en sentido contrario
- Lee las opciones ingresadas en el cliente, y le devuelve los datos necesarios.

Para realizar esto último, el servidor cuenta con 3 funciones principales:

función programa: se encarga de ingresar las peticiones de los clientes a la programación. La programación es almacenada en el arreglo 2-D progra, el cual tiene 4 columnas. Cada columna representa:
1.- número del video pedido
2.- hora de inicio de la Tx
3.- Hora término de la Tx
4.- Hora máxima en la que se puede transmitir
Además, programa  cuenta  modifica también el arreglo usuarios, el cual contiene los usuarios asignados a cada petición
Por defecto, programa ordena las peticiones en forma FCFS, programando cada petición lo más pronto posible
La función programa también se encarga de definir si un usuario puede ser reprogramado en caso de que otro usuario con menos tiempo solicite un video. En este caso, programa revisa si exista un cliente que pueda ser reitinerado, de acuerdo a su hora máxima y duración del video
Si se produce reprogramación, programa llama a la función enviamail, la cual envía un mail con la nueva fecha al usuario (adaptada de una función vista en clases);

- función m_prog: se encarga de mostrar al cliente los videos ya programados.
Recibe el arreglo progra, que contiene la programación, y básicamente transforma a texto la información contenida en el arreglo . Este texto es enviado en el main al cliente
- función actualiza: se encarga de actualizar el arreglo progra, chequeando si hay películas ya terminadas. si las hay, las elimina de la programación, y actualiza el arreglo
 
 

programa vcClient

El programa cliente básicamente recoge las opciones del usuario, las envía al servidor, y despliega en pantalla los datos enviados por este
El programa comienza desplegando un menú, y pidiendo una opción al usuario.
La opción ingresada es enviada al servidor.
Para las dos primeras opciones , el cliente luego espera los datos enviados por el servidor y los despliega en pantalla
Para la opción 3, el cliente pide al usuario que ingrese el numero de video, y fecha máxima en que se puede programar la petición (en formato Nºvideo/mes/dia/hora/minutos). Por ejemplo para ingresar el video 1 para el 25 de septiembre a las 10:00 am se debe ingresar:
1/9/25/10/00
A estos datos se les agrega el login del usuario, obtenido a través de un comando system, y se envía un string al servidor. Este mediante las funciones ya explicadas genera un string de retorno al cliente informando el status de su programación
 
 

A continuación se incluye un diagrama que ilustra el funcionamiento de los programas