summaryrefslogtreecommitdiff
blob: c38fb7d132cc0cdcbb9cbc7aa9c9d4482aa196a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdlib.h>
#include <unistd.h>

#include "../parameters/parameters.h"

#include "server.h"

static void finalize_thread_collection
(
   struct ZoO_server_thread_collection workers [const restrict static 1]
)
{
   free((void *) workers->threads);

   workers->threads_capacity = 0;

   pthread_mutex_destroy(&(workers->mutex));
   pthread_barrier_destroy(&(workers->barrier));

   workers->currently_running = 0;
}

static void finalize_socket
(
   struct ZoO_server_socket socket [const restrict static 1]
)
{
   FD_ZERO(&(socket->as_a_set));

   close(socket->file_descriptor);

   socket->file_descriptor = -1;
}

void ZoO_server_finalize
(
   struct ZoO_server server [const restrict static 1]
)
{
   finalize_thread_collection(&(server->workers));
   finalize_socket(&(server->socket));
}