Ver código fonte

Creation fichier fonctions utilitaire json

Arthur Brandao 6 anos atrás
pai
commit
299c75de3d
4 arquivos alterados com 76 adições e 40 exclusões
  1. 38 0
      Serveur/json.c
  2. 33 0
      Serveur/json.h
  3. 2 38
      Serveur/json_encoder.c
  4. 3 2
      Serveur/makefile

+ 38 - 0
Serveur/json.c

@@ -0,0 +1,38 @@
+/* 
+ * File:   json.c
+ * Author: Arthur Brandao
+ *
+ * Created on 24 novembre 2018
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "json.h"
+
+/* --- Fonctions publiques --- */
+
+void add_json_node(JsonEncoder* this, char* str){
+    //Création node
+    JsonNode* node;
+    node = malloc(sizeof(JsonNode));
+    //Allocation node
+    int length = strlen(str) + 1;
+    node->str = malloc(length * sizeof(char));
+    memset(node->str, 0, length);
+    strncpy(node->str, str, length - 1);
+    //Si 1er node
+    if(this->head == NULL){
+        this->head = node;
+        node->prev = NULL;
+    } else {
+        node->prev = this->tail;
+        node->prev->next = node;
+    }
+    this->tail = node;
+    node->next = NULL;
+}
+
+
+void delete_json_node(JsonNode* node){
+    free(node->str);
+}

+ 33 - 0
Serveur/json.h

@@ -39,6 +39,24 @@ typedef struct{
     int length;
 }JsonEncoder;
 
+typedef struct{
+    char* str; //La chaine
+    char** val; //Pointeur vers les valeurs du tableau
+    int* val_length; //Taille des valeurs
+}JsonArrayParser;
+
+typedef struct{
+    JsonNode* tab; //Liste des elements du tableau
+    int length; //Taille du tableau
+}JsonArrayEncoder;
+
+typedef struct{
+    int mode; //Le mode (Parse ou Encode)
+    int type; //Le type de données du tableau
+    JsonArrayParser* parser;
+    JsonArrayEncoder* encoder;
+}JsonArray;
+
 struct JsonNode{
     JsonNode* prev;
     JsonNode* next;
@@ -47,6 +65,21 @@ struct JsonNode{
 
 /* --- Fonctions ---- */
 
+//Utilitaire
+
+/**
+ * Ajout un noeud au JsonEncoder
+ * @param JsonEncoder* La structure pour encoder 
+ * @param char* La chaine à mettre dans le noeud
+ */
+void add_json_node(JsonEncoder*, char*);
+
+/**
+ * Supprimme un noeud
+ * @param JsonNode* Le noeud à supprimer
+ */
+void delete_json_node(JsonNode*);
+
 //JsonParser
 
 /**

+ 2 - 38
Serveur/json_encoder.c

@@ -9,42 +9,6 @@
 #include <math.h>
 #include "json.h"
 
-/* --- Fonctions privée --- */
-
-/**
- * Ajout un noeud au JsonEncoder
- * @param JsonEncoder* La structure pour encoder 
- * @param char* La chaine à mettre dans le noeud
- */
-void add_node(JsonEncoder* this, char* str){
-    //Création node
-    JsonNode* node;
-    node = malloc(sizeof(JsonNode));
-    //Allocation node
-    int length = strlen(str) + 1;
-    node->str = malloc(length * sizeof(char));
-    memset(node->str, 0, length);
-    strncpy(node->str, str, length - 1);
-    //Si 1er node
-    if(this->head == NULL){
-        this->head = node;
-        node->prev = NULL;
-    } else {
-        node->prev = this->tail;
-        node->prev->next = node;
-    }
-    this->tail = node;
-    node->next = NULL;
-}
-
-/**
- * Supprimme un noeud
- * @param JsonNode* Le noeud à supprimer
- */
-void delete_node(JsonNode* node){
-    free(node->str);
-}
-
 /* --- Fonctions publique --- */
 
 void ini_encoder(JsonEncoder* this){
@@ -57,7 +21,7 @@ void add_value(JsonEncoder* this, char* str){
     //Ajoute la longueur de la chaine au total
     this->length += strlen(str) + 2; //Chaine + ", "
     //Ajoute le noeud
-    add_node(this, str);
+    add_json_node(this, str);
 }
 
 void add_string(JsonEncoder* this, char* key, char* val){
@@ -163,7 +127,7 @@ void clean_json_encoder(JsonEncoder* this){
     node = this->head;
     while(node != NULL){
         tmp = node->next;
-        delete_node(node);
+        delete_json_node(node);
         free(node);
         node = tmp;
     }

+ 3 - 2
Serveur/makefile

@@ -3,7 +3,7 @@
 #
 
 EXEC = main test
-OBJETS = str.o json_parser.o json_encoder.o error.o arraylist.o server_tcp.o server_udp.o bomberstudent_server.o client.o file.o handler.o
+OBJETS = str.o json.o json_parser.o json_encoder.o error.o arraylist.o server_tcp.o server_udp.o bomberstudent_server.o client.o file.o handler.o
 NOM_PROJET = Projet Reseau
 
 #
@@ -95,6 +95,7 @@ archive: clean
 
 # DEPENDANCES
 str.o: str.c str.h
+json.o: json.c json.h str.h constante.h
 json_parser.o: json_parser.c json.h str.h constante.h
 json_encoder.o: json_encoder.c json.h str.h constante.h
 error.o: error.c str.h error.h
@@ -108,6 +109,6 @@ file.o: file.c error.h str.h file.h constante.h
 handler.o: handler.c bomberstudent_server.h constante.h server.h json.h \
  str.h client.h handler.h
 main.o: main.c error.h bomberstudent_server.h constante.h server.h json.h \
- str.h client.h main.h
+ str.h client.h main.h handler.h
 test.o: test.c json.h str.h constante.h arraylist.h server.h error.h \
  bomberstudent_server.h client.h file.h