/****************************************************************************
*  XARXES DE COMPUTADORS II                                                 
*
*  Practica VoIP
*
*  Realizado por: 
*     Francisco Jose Aguilar Celdran
*     Sergio Blanco Cuaresma
*
*  libclient.h: 
*     Implementación de funciones que permiten interactuar con el servidor
*     o otro usuario (iniciar llamada) segun el protocolo establecido en
*     la practica.
*     La funcion crear_socket se utilizara para generar los sockets necesarios
*     que seran solicitado en el resto de funciones.
****************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/param.h>
#include <sys/socket.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>


int Register(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to, char *port, char *error);
int Unregister(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to);
int Whereis(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to, char *userToFind, UserPort *location);
int GetList(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to, Cola *cola);
int Invite(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to, char *callid);
int Bye(int sock, struct sockaddr_in dir_socket_servidor, char *from, char *to, char *callid, char *reason);

void crear_socket(char *nombre_servidor, unsigned int puerto, int *sock, struct sockaddr_in *dir_socket_servidor);

void tratar_direccion(char *direccion, char *usuario, char *maquina);
void tratar_invite(char *peticion, char *from, char *to, char *callid);
char *construir_direccion(char *usuario, char *maquina);
