bomberstudent_server.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. /* --- Fonctions --- */
  20. /**
  21. * Initialise les variables du serveur
  22. */
  23. void ini_server();
  24. /**
  25. * Ajoute un handler
  26. * @param char* La methode lié au handler
  27. * @param char* La ressource lié au handler
  28. * @param int(*)(int, JsonParser*) La fonction à appeler
  29. */
  30. void add_handler(char*, char*, int(*)(int, JsonParser*));
  31. /**
  32. * Lance le serveur UDP pour permettre d'être trouver dans le reseau
  33. * @param int Port UDP
  34. * @return Reussite
  35. */
  36. boolean launch_udp_server(int);
  37. /**
  38. * Lance les serveurs TCP sur port et port + 1, pour respectivement communiquer
  39. * et notifier le client
  40. * @param int Le port
  41. * @return Reussite
  42. */
  43. boolean launch_tcp_server(int);
  44. /**
  45. * Attente reception d'une requete du client
  46. * @param Client* Le client dont ont attend une requete
  47. * @return Reussite
  48. */
  49. boolean receive_client(Client*);
  50. /**
  51. * Repond au client
  52. * @param int L'id du client
  53. * @param JsonEncoder* Les données à envoyer
  54. * @return Reussite
  55. */
  56. boolean send_client(int, JsonEncoder*);
  57. /**
  58. * Notifie les clients
  59. * @param Client* Le client à notifier
  60. * @param char* Méthode à utiliser (POST ou GET)
  61. * @param char* La ressource demandé
  62. * @param JsonEncoder* Les parametres
  63. * @return Reussite
  64. */
  65. boolean notify_client(Client*, char*, char*, JsonEncoder*);
  66. /**
  67. * Notifie tous les clients connecté
  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_all(char*, char*, JsonEncoder*);
  74. #endif /* BOMBERSTUDENT_SERVER_H */