Coverage report for server


src/
File: src/commands/handler.c
Date: 2024-06-25 10:57:05
Lines:
11/22
50.0%
Functions:
2/2
100.0%
Branches:
7/24
29.2%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy
4 ** File description:
5 ** handler.c
6 */
7
8 #include "server.h"
9
10 const commands_t commands_gui[NB_GUI_COMMANDS] = {
11 {"msz", msz},
12 {"bct", bct},
13 {"mct", mct},
14 {"tna", tna},
15 {"ppo", ppo},
16 {"plv", plv},
17 {"pin", pin},
18 {"sgt", sgt},
19 {"sst", sst}
20 };
21
22 const commands_t commands_ai[NB_AI_COMMANDS] = {
23 {"Forward", forward},
24 {"Right", right},
25 {"Left", left},
26 {"Look", look},
27 {"Inventory", inventory},
28 {"Broadcast", broadcast},
29 {"Connect_nbr", connect_nbr},
30 {"Fork", fork_z},
31 {"Eject", eject},
32 {"Take", take},
33 {"Set", set},
34 {"Incantation", incantation},
35 };
36
37 2 static bool execute_command(client_t *client, server_t *server)
38 {
39 size_t nb_commands;
40 char *name;
41
42
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (client->is_connected == false)
43 return false;
44 nb_commands = client->is_graphic ? NB_GUI_COMMANDS : NB_AI_COMMANDS;
45 for (size_t i = 0; i < nb_commands; i++) {
46 name = client->is_graphic ? commands_gui[i].name : commands_ai[i].name;
47 if (strcmp(client->commands[0], name) != 0)
48 continue;
49 if (client->is_graphic)
50 commands_gui[i].command(client, server);
51 else
52 commands_ai[i].command(client, server);
53 free_array((void **)client->commands);
54 return true;
55 }
56 if (client->is_graphic)
57 message_to_graphicals(server, "sbp\n");
58 return false;
59 }
60
61 4 void handle_client_message(client_t *client, server_t *server)
62 {
63 4 client->commands = str_to_array_separator(client->message, " \n\t");
64
3/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
4 if (client->commands == NULL || client->commands[0] == NULL)
65 return;
66
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 if (execute_command(client, server) == true)
67 return;
68
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 if (connector(client, server) == false) {
69
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (client->is_graphic == false)
70 2 dprintf(client->fd, "ko\n");
71 2 free_array((void **)client->commands);
72 2 return;
73 }
74 }
75