/* * File: main.c * Author: Arthur Brandao * * Created on 22 novembre 2018 */ #include #include #include #include #include "error.h" #include "bomberstudent_server.h" #include "main.h" /* --- Extern --- */ extern Error error; /* --- Global --- */ boolean stop = false; /* --- Fonctions privées --- */ void handler(int sig){ //Si SIGINT if(sig == SIGINT){ stop = true; //Remet le handler signal(SIGINT, handler); //Avertit les clients notify_close(END_USER); } } /* --- Fonctions publiques --- */ void notify_close(int code){ char codestr[3]; memset(codestr, 0, 3); sprintf(codestr, "%d", code); //Encode la reponse JsonEncoder je; ini_encoder(&je); add_string(&je, "statut", codestr); add_string(&je, "message", "Server close"); //Avertit tous les clients notify_all("POST", "server/end", &je); } int main(){ //Lancement gestion d'erreur error_finit("bomberstudent_server.log"); //Inialise le serveur ini_server(); //Gestion des signaux signal(SIGINT, handler); signal(SIGPIPE, SIG_IGN); //Ignore les signaux SIGPIPE (on est pas sur d'en recevoir à chaque coupure socket + Impossible de determnier quelle socket est fermé (on laisse la méthode du timeout pour la trouver) //Ajout des handlers /*add_handler("POST", "aze/rty", handler);*/ //Lance le serveur UDP if(!launch_udp_server(PORT_UDP)){ error.print("Impossible de démarrer le serveur"); error.exit_err(); } //Lance les seerveurs TCP if(!launch_tcp_server(PORT_TCP)){ error.print("Impossible de démarrer le serveur"); error.exit_err(); } //Attend la fin du programme while(!stop){ pause(); } error.end(); return EXIT_SUCCESS; }