bomberstudent_server.h 1.9 KB

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