main.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * File: main.c
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 22 novembre 2018
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <signal.h>
  11. #include "error.h"
  12. #include "bomberstudent_server.h"
  13. #include "main.h"
  14. /* --- Extern --- */
  15. extern Error error;
  16. /* --- Global --- */
  17. boolean stop = false;
  18. /* --- Fonctions privées --- */
  19. void handler(int sig){
  20. //Si SIGINT
  21. if(sig == SIGINT){
  22. stop = true;
  23. //Remet le handler
  24. signal(SIGINT, handler);
  25. //Avertit les clients
  26. notify_close(END_USER);
  27. }
  28. }
  29. /* --- Fonctions publiques --- */
  30. void notify_close(int code){
  31. char codestr[3];
  32. memset(codestr, 0, 3);
  33. sprintf(codestr, "%d", code);
  34. //Encode la reponse
  35. JsonEncoder je;
  36. ini_encoder(&je);
  37. add_string(&je, "statut", codestr);
  38. add_string(&je, "message", "Server close");
  39. //Avertit tous les clients
  40. notify_all("POST", "server/end", &je);
  41. }
  42. int main(){
  43. //Lancement gestion d'erreur
  44. error_finit("bomberstudent_server.log");
  45. //Inialise le serveur
  46. ini_server();
  47. //Gestion des signaux
  48. signal(SIGINT, handler);
  49. //Ajout des handlers
  50. /*add_handler("POST", "aze/rty", handler);*/
  51. //Lance le serveur UDP
  52. if(!launch_udp_server(PORT_UDP)){
  53. error.print("Impossible de démarrer le serveur");
  54. error.exit_err();
  55. }
  56. //Lance les seerveurs TCP
  57. if(!launch_tcp_server(PORT_TCP)){
  58. error.print("Impossible de démarrer le serveur");
  59. error.exit_err();
  60. }
  61. //Attend la fin du programme
  62. while(!stop){
  63. pause();
  64. }
  65. error.end();
  66. return EXIT_SUCCESS;
  67. }