bomberstudent_server.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * File: bomberstudent_server.c
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 14 novembre 2018
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <pthread.h>
  10. #include "arraylist.h"
  11. #include "bomberstudent_server.h"
  12. #include "error.h"
  13. /* --- Globale --- */
  14. arraylist get;
  15. arraylist post;
  16. /* --- Fonctions privées --- */
  17. void* udp_thread(void* data){
  18. /*Server s;
  19. //Cast data en serveur
  20. s = (Server) data;
  21. //Detache le thread
  22. if(pthread_detach(pthread_self()) != 0){
  23. return NULL;
  24. }*/
  25. return NULL;
  26. }
  27. /* --- Fonctions publiques --- */
  28. void ini_server(){
  29. arraylist_ini(&get);
  30. arraylist_ini(&post);
  31. }
  32. void add_handler(char* method, char* ressource, int(*handler)(Server, JsonParser*)){
  33. if(strncmp(method, "POST", 5) == 0){
  34. arraylist_add(&post, ressource, handler);
  35. } else if(strncmp(method, "POST", 5) == 0){
  36. arraylist_add(&get, ressource, handler);
  37. }
  38. }
  39. boolean launch_udp_server(int port){
  40. Server s;
  41. boolean res;
  42. pthread_t udp;
  43. //Creation serveur
  44. s = server_create_udp();
  45. res = s->server_bind(s, port);
  46. if(!res){
  47. return false;
  48. }
  49. //Lancement thread serveur udp
  50. if(pthread_create(&udp, NULL, udp_thread, s) != 0){
  51. adderror("Impossible de créer le thread UDP");
  52. server_close(s);
  53. return false;
  54. }
  55. return true;
  56. }
  57. boolean launch_tcp_server(int);
  58. boolean receive_client(Server);
  59. boolean send_client(Server, JsonEncoder*);
  60. boolean notify_client(Server, char*, char*, JsonEncoder*);