From 509ac16d892aeb5091f68620247f6815d2e4b5f5 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Tue, 31 Jan 2017 16:21:24 +0100 Subject: Switched to sockets, continuing implementation... --- src/server/server_initialize.c | 99 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/server/server_initialize.c (limited to 'src/server/server_initialize.c') diff --git a/src/server/server_initialize.c b/src/server/server_initialize.c new file mode 100644 index 0000000..9213156 --- /dev/null +++ b/src/server/server_initialize.c @@ -0,0 +1,99 @@ +#include +#include +#include + +#include "../parameters/parameters.h" + +#include "server.h" + +static int initialize_worker_collection +( + struct ZoO_server_thread_collection c [const restrict static 1] +) +{ + int error; + + c->threads = (struct ZoO_server_thread_data *) NULL; + c->threads_capacity = 0; + c->currently_running = 0; + + error = + pthread_mutex_init + ( + &(c->mutex), + (const pthread_mutexattr_t *) NULL + ); + + if (error != 0) + { + fprintf + ( + stderr, + "[F] Unable to initialize worker collection's mutex: %s.\n", + strerror(error) + ); + + return -1; + } + + error = + pthread_barrier_init + ( + &(c->barrier), + (const pthread_barrierattr_t *) NULL, + 2 + ); + + if (error != 0) + { + fprintf + ( + stderr, + "[F] Unable to initialize worker collection's barrier: %s.\n", + strerror(error) + ); + + return -1; + } + + return 0; +} + +void initialize_thread_parameters +( + struct ZoO_server server [const restrict static 1], + const struct ZoO_parameters params [const restrict static 1] +) +{ + server->thread_params.thread_collection = &(server->workers); + server->thread_params.server_params = params; + server->thread_params.socket = -1; +} + +int ZoO_server_initialize +( + struct ZoO_server server [const restrict static 1], + const struct ZoO_parameters params [const restrict static 1] +) +{ + if (initialize_worker_collection(&(server->workers)) < 0) + { + return -1; + } + + if + ( + ZoO_server_socket_open + ( + &(server->socket), + ZoO_parameters_get_session_name(params) + ) < 0 + ) + { + return -2; + } + + initialize_thread_parameters(server, params); + + return 0; +} -- cgit v1.2.3-70-g09d2