Coverage report for server


src/
File: src/client/lists.c
Date: 2024-06-25 10:57:05
Lines:
49/49
100.0%
Functions:
6/6
100.0%
Branches:
12/16
75.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy
4 ** File description:
5 ** lists.c
6 */
7
8 #include "server.h"
9
10 const int orientations[4] = {NORTH, SOUTH, WEST, EAST};
11
12 7 static void init_inventory(inventory_t *inv)
13 {
14 7 inv->thystame = 0;
15 7 inv->phiras = 0;
16 7 inv->mendiane = 0;
17 7 inv->sibur = 0;
18 7 inv->deraumere = 0;
19 7 inv->linemate = 0;
20 7 inv->food = 10;
21 7 }
22
23 7 static void init_bools(client_t *client)
24 {
25 static int id = 0;
26
27 7 client->id = id;
28 7 client->is_incanting = false;
29 7 client->is_connected = false;
30 7 client->is_graphic = false;
31 7 id++;
32 7 }
33
34 7 client_t *init_client(int client_fd)
35 {
36 7 uuid_t binuuid;
37 7 client_t *client = malloc(sizeof(client_t));
38
39
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 if (client == NULL)
40 7 return NULL;
41 7 uuid_generate_random(binuuid);
42 7 uuid_unparse_lower(binuuid, client->uuid);
43 7 client->commands = NULL;
44 7 client->fd = client_fd;
45
2/2
✓ Branch 0 taken 70 times.
✓ Branch 1 taken 7 times.
77 for (unsigned char i = 0; i < NB_REQUESTS_HANDLEABLE; i++) {
46 70 client->tclient[i].available_request = false;
47 70 client->tclient[i].command = -1;
48 }
49 7 client->level = 1;
50 7 init_bools(client);
51 7 client->orientation = orientations[rand_p(4)];
52 7 client->payload = NULL;
53 7 init_inventory(&client->inventory);
54 7 client->egg_id = 0;
55 7 return client;
56 }
57
58 1 void destroy_clients(struct client_tailq *clients)
59 {
60 client_list_t *item;
61
62
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
3 TAILQ_FOREACH(item, clients, entries) {
63
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 TAILQ_REMOVE(clients, item, entries);
64 }
65 1 }
66
67 1 void remove_client_by_fd(struct client_tailq *clients, int fd)
68 {
69 client_list_t *item;
70
71
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 TAILQ_FOREACH(item, clients, entries) {
72
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (item->client->fd == fd) {
73
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 TAILQ_REMOVE(clients, item, entries);
74 1 break;
75 }
76 }
77 1 }
78
79 1 void print_clients_fds(struct client_tailq *clients)
80 {
81 client_list_t *item;
82
83
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
3 TAILQ_FOREACH(item, clients, entries) {
84 2 printf("FD: %d\n", item->client->fd);
85 }
86 1 }
87