bomberstudent_server.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. * File: bomberstudent_server.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 14 novembre 2018
  6. */
  7. #ifndef BOMBERSTUDENT_SERVER_H
  8. #define BOMBERSTUDENT_SERVER_H
  9. /* --- Include --- */
  10. #include "constante.h"
  11. #include "server.h"
  12. #include "json.h"
  13. #include "client.h"
  14. /* --- Constantes --- */
  15. #define PORT_UDP 18624
  16. #define PORT_TCP 18642
  17. #define EUNKNOWN 0 //Erreur inconnue (520)
  18. #define EREQUEST 1 //Erreur requete (400)
  19. #define EFORBIDDEN 2 //Interdit (403)
  20. /* --- Fonctions --- */
  21. /**
  22. * Initialise les variables du serveur
  23. */
  24. void ini_server();
  25. /**
  26. * Ajoute un handler
  27. * @param char* La methode lié au handler
  28. * @param char* La ressource lié au handler
  29. * @param int(*)(int, JsonParser*) La fonction à appeler
  30. */
  31. void add_handler(char*, char*, int(*)(int, JsonParser*));
  32. /**
  33. * Lance le serveur UDP pour permettre d'être trouver dans le reseau
  34. * @param int Port UDP
  35. * @return Reussite
  36. */
  37. boolean launch_udp_server(int);
  38. /**
  39. * Lance les serveurs TCP sur port et port + 1, pour respectivement communiquer
  40. * et notifier le client
  41. * @param int Le port
  42. * @return Reussite
  43. */
  44. boolean launch_tcp_server(int);
  45. /**
  46. * Attente reception d'une requete du client
  47. * @param Client* Le client dont ont attend une requete
  48. * @return Reussite
  49. */
  50. boolean receive_client(Client*);
  51. /**
  52. * Repond au client
  53. * @param int L'id du client
  54. * @param JsonEncoder* Les données à envoyer
  55. * @return Reussite
  56. */
  57. boolean send_client(int, JsonEncoder*);
  58. /**
  59. * Envoi un message d'erreur au client
  60. * @param int L'id du client
  61. * @param int Le numero de l'erreur
  62. * @return Reussite
  63. */
  64. boolean send_err_client(int, int);
  65. /**
  66. * Notifie les clients
  67. * @param Client* Le client à notifier
  68. * @param char* Méthode à utiliser (POST ou GET)
  69. * @param char* La ressource demandé
  70. * @param JsonEncoder* Les parametres
  71. * @return Reussite
  72. */
  73. boolean notify_client(Client*, char*, char*, JsonEncoder*);
  74. /**
  75. * Notifie tous les clients connecté
  76. * @param char* Méthode à utiliser (POST ou GET)
  77. * @param char* La ressource demandé
  78. * @param JsonEncoder* Les parametres
  79. * @return Reussite
  80. */
  81. boolean notify_all(char*, char*, JsonEncoder*);
  82. #endif /* BOMBERSTUDENT_SERVER_H */