Threads and Scheduling
at main 49 lines 1.4 kB view raw
1#ifndef LIB_H_ 2#define LIB_H_ 3#include "enchufe.h" 4#include <assert.h> 5 6// Macro para detectar si un pointer es NULL. Usa esta funcion si prefieres 7// crashear el programa cuando encuetras un puntero NULL. 8#define exists(a) do { \ 9 if ((a) == NULL) { \ 10 fprintf(stderr, "[ERROR]: %s:%d Null pointer encountered, %s\n", __FILE__, __LINE__, strerror(errno)); \ 11 exit (EXIT_FAILURE); \ 12 } \ 13 } while(0) 14 15// Esto es necesario por si prefieres que Proc aguante una unidad de tiempo 16// distinta. 17typedef Byte Time; 18 19// Esto sera lo que se envia y recibe por el socket. 20typedef struct { 21 Time time; 22 Buffer program; 23} Proc; 24 25// Esto es para crear una lista dinamica de Procs. 26typedef struct { 27 Proc* procs; 28 size_t len; 29} Procs; 30 31// Esta funcion convierte un buffer en una lista de Proc's. 32Procs deserialize(Buffer out_buf, size_t msg_len); 33 34// Esta funcion convierte un Proc en un buffer. 35Buffer serialize(Proc); 36 37// Esta funcion convierte un string que representa un IPv4 en un IPv4. 38IPv4 parse_address(const char* str); 39 40// Esta funcion verifica que el string enviado por el socket sea valido. 41Buffer validate_str(Buffer str, size_t max_len); 42 43// Esta funcion crea una copia de un buffer en memoria y lo devuelve. 44Buffer bufcpy(Buffer in); 45 46// Esta funcion es mejor que strlen. 47size_t safe_strlen(const char* str, size_t max_len); 48 49#endif // LIB_H_