Browse Source

:sparkles: Reponse au client

Arthur Brandao 6 years ago
parent
commit
f978c47372
4 changed files with 44 additions and 55 deletions
  1. 37 1
      Serveur/bomberstudent_server.c
  2. 1 1
      Serveur/bomberstudent_server.h
  3. 0 28
      Serveur/bomberstudent_server.log
  4. 6 25
      Serveur/main.c

+ 37 - 1
Serveur/bomberstudent_server.c

@@ -193,6 +193,7 @@ boolean receive_client(Client* cli) {
         method = GET;
     } else {
         //Methode incorrect
+        adderror("Methode incorrect");
         return false;
     }
     //Recup la ressource
@@ -201,6 +202,7 @@ boolean receive_client(Client* cli) {
         pos++;
     }
     if (compteur == 0) {
+        adderror("Aucune ressource demandée");
         return false;
     }
     ressource = malloc(sizeof (char) * compteur);
@@ -209,11 +211,13 @@ boolean receive_client(Client* cli) {
     if (method == POST) {
         if (buffer[pos] == '\0') {
             //Pas de parametre avec le post
+            adderror("Absence de parametre en POST");
             return false;
         }
         json = reader + compteur + 1;
         jp = malloc(sizeof (JsonParser));
         if (json_parse(jp, json) != JSON_OK) {
+            adderror("Impossible de parser le JSON");
             return false;
         }
         //Change la liste à utiliser
@@ -221,10 +225,42 @@ boolean receive_client(Client* cli) {
     }
     //Appel le callback
     if (arraylist_call(al, ressource, cli->id, jp) == ERR) {
+        adderror("Impossible d'executer le callback");
         return false;
     }
+    //Nettoyage
+    free(ressource);
+    if(jp != NULL){
+        free(jp);
+    }
+    return true;
+}
+
+boolean send_client(int cliId, JsonEncoder* je){
+    Client* cli;
+    char* answer, * msg;
+    //Recup client
+    cli = get_client(cliId);
+    if (cli == NULL) {
+        adderror("Le client n'existe pas");
+        return false;
+    }
+    //Preparation message
+    answer = json_encode(je);
+    msg = malloc(sizeof(char) + (strlen(answer) + 2));
+    memset(msg, 0, strlen(answer) + 2);
+    sprintf(msg, "%s\n", answer);
+    //Envoi la reponse
+    if(!cli->main->server_send(cli->main, msg)){
+        adderror("Impossible de repondre à la requete du client");
+        free(answer);
+        free(msg);
+        return false;
+    }
+    //Nettoyage
+    free(answer);
+    free(msg);
     return true;
 }
 
-boolean send_client(Client* cli, JsonEncoder* answer);
 boolean notify_client(Client* cli, char* method, char* ressource, JsonEncoder* param);

+ 1 - 1
Serveur/bomberstudent_server.h

@@ -24,7 +24,7 @@ void add_handler(char*, char*, int(*)(int, JsonParser*));
 boolean launch_udp_server(int);
 boolean launch_tcp_server(int);
 boolean receive_client(Client*);
-boolean send_client(Client*, JsonEncoder*);
+boolean send_client(int, JsonEncoder*);
 boolean notify_client(Client*, char*, char*, JsonEncoder*);
 
 #endif /* BOMBERSTUDENT_SERVER_H */

+ 0 - 28
Serveur/bomberstudent_server.log

@@ -1,28 +0,0 @@
------ Log processus 8588 (timestamp : 1542806025) -----
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
------ Fin log processus 8588 (temps en seconde : 60) -----
------ Log processus 8691 (timestamp : 1542806438) -----
------ Log processus 8706 (timestamp : 1542806486) -----
------ Log processus 8733 (timestamp : 1542806547) -----
------ Log processus 8766 (timestamp : 1542806631) -----
------ Fin log processus 8766 (temps en seconde : 60) -----
------ Log processus 8810 (timestamp : 1542806794) -----
------ Fin log processus 8810 (temps en seconde : 60) -----
-eur dans le fichier server_udp.c ligne 31, Impossible de bind la socket : Address already in use
-Erreur dans le fichier bomberstudent_server.c ligne 135, Impossible de bind le serveur UDP : Erreur lors du bind de la socket
------ Fin log processus 8815 (temps en seconde : 0) -----
------ Log processus 8860 (timestamp : 1542806868) -----
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 41, Erreur lors de la reception d'une requete du client
------ Log processus 9227 (timestamp : 1542807502) -----
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client
------ Fin log processus 9227 (temps en seconde : 60) -----
------ Log processus 9276 (timestamp : 1542807569) -----
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client
-Erreur dans le fichier bomberstudent_server.c ligne 42, Erreur lors de la reception d'une requete du client

+ 6 - 25
Serveur/main.c

@@ -96,29 +96,6 @@ int encode(){
     return 0;
 }
 
-int func(char* arg){
-    printf("Func : %s\n", arg);
-    return EXIT_SUCCESS;
-}
-
-int tion(char* arg){
-    printf("Tion : %s\n", arg);
-    return EXIT_SUCCESS;
-}
-
-int array_list(){
-    /*arraylist al;
-    arraylist_ini(&al);
-    arraylist_add(&al, "func1", func);
-    arraylist_add(&al, "func2", tion);
-    
-    printf("%d\n", arraylist_call(&al, "func2", "Pouet"));
-    printf("%d\n", arraylist_call(&al, "func1", "Loul"));
-    printf("%d\n", arraylist_call(&al, "func3", "Nop"));*/
-    
-    return 0;
-}
-
 int serv(){
     char str[BUFFER_SIZE];
     
@@ -167,13 +144,17 @@ int serv_tcp(){
 
 int handler(int cliId, JsonParser* jp){
     printf("Handler : %d - %s\n", cliId, get_value(jp, "key"));
+    JsonEncoder je;
+    ini_encoder(&je);
+    add_integer(&je, "code", 200);
+    add_string(&je, "etat", "ok");
+    send_client(cliId, &je);
     return 1;
 }
 
 int main(){
     //return parse();
     //return encode();
-    //return array_list();
     //return serv();
     //return serv_udp();
     //return serv_tcp();
@@ -190,7 +171,7 @@ int main(){
         error.print("Impossible de démarrer le serveur");
         error.exit_err();
     }
-    sleep(60);
+    sleep(20);
     error.exit();
     //*/
 }