Kaynağa Gözat

:sparkles: Ajout handler game/list

Arthur Brandao 6 yıl önce
ebeveyn
işleme
440805a624
2 değiştirilmiş dosya ile 50 ekleme ve 1 silme
  1. 41 0
      Serveur/handler.c
  2. 9 1
      Serveur/handler.h

+ 41 - 0
Serveur/handler.c

@@ -7,15 +7,56 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include "error.h"
 #include "bomberstudent_server.h"
 #include "client.h"
+#include "game.h"
+#include "player.h"
 #include "handler.h"
 
+/* --- Extern --- */
+extern int nbGame;
+
+/* --- Fonctions publiques --- */
 void ini_handler(){
     add_handler("GET", "client/end", handler_client_end);
+    add_handler("GET", "game/list", handler_game_list);
 }
 
 int handler_client_end(int cliId, JsonParser* json){
     remove_client(cliId);
     return SUCCESS;
+}
+
+int handler_game_list(int cliId, JsonParser* json){
+    JsonEncoder reponse;
+    JsonArray* game;
+    JsonArray* map;
+    //Recup la liste des parties et des cartes
+    game = list_game();
+    map = list_map();
+    //Creation reponse
+    ini_encoder(&reponse);
+    add_string(&reponse, "action", "game/list");
+    add_string(&reponse, "statut", "200");
+    add_string(&reponse, "message", "ok");
+    if(game == NULL){
+        add_integer(&reponse, "numberGameList", 0);
+    } else {
+        add_integer(&reponse, "numberGameList", nbGame);
+        add_array(&reponse, "games", game);
+        clean_json_array(game);
+        free(game);
+    }
+    add_array(&reponse, "maps", map);
+    //Envoi reponse au client
+    if(!send_client(cliId, &reponse)){
+        adderror("Impossible de répondre au client");
+        return FAIL;
+    }
+    //Nettoyage
+    clean_json_encoder(&reponse);
+    clean_json_array(map);
+    free(map);
+    return SUCCESS;
 }

+ 9 - 1
Serveur/handler.h

@@ -19,12 +19,20 @@
 void ini_handler();
 
 /**
- * Handler de gestion des deconnxion des clients
+ * Handler de gestion des deconnexion des clients
  * @param int L'id du client
  * @param JsonParser* Le json envoyer par le client
  * @return int Etat
  */
 int handler_client_end(int, JsonParser*);
 
+/**
+ * Liste des games actives
+ * @param int L'id du client
+ * @param JsonParser* Le json envoyer par le client
+ * @return int Etat
+ */
+int handler_game_list(int, JsonParser*);
+
 #endif /* HANDLER_H */