summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/server.c')
-rw-r--r--src/server/server.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/server/server.c b/src/server/server.c
index 3ded7cc..8a75615 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -1,6 +1,7 @@
#include <signal.h>
+#include <stdio.h>
-#include "../cli/parameters.h"
+#include "../parameters/parameters.h"
#include "server.h"
@@ -18,6 +19,7 @@ int ZoO_server_main (const struct ZoO_parameters params)
{
struct ZoO_server server;
struct ZoO_server_message msg_buffer;
+ struct ZoO_server_worker_parameters worker_params;
if
(
@@ -31,6 +33,14 @@ int ZoO_server_main (const struct ZoO_parameters params)
return -1;
}
+ ZoO_server_worker_initialize_parameters
+ (
+ &worker_params,
+ &server,
+ &msg_buffer,
+ &params
+ );
+
while ((ZoO_SERVER_IS_RUNNING == (char) 1) || (server.running_threads > 0))
{
if (ZoO_server_receive_message(&server, &msg_buffer) < 0)
@@ -42,13 +52,21 @@ int ZoO_server_main (const struct ZoO_parameters params)
switch (msg_buffer.type)
{
- case 'C':
- ZoO_server_new_client(&server, &msg_buffer);
+ case 'C': /* Client request */
+ ZoO_server_add_worker(&server, &worker_params);
+ break;
- case 'J':
- ZoO_server_join_thread(&server, &msg_buffer);
+ case 'J': /* Join request */
+ ZoO_server_finalize_worker(&server, &msg_buffer);
+ break;
default:
+ fprintf
+ (
+ stderr,
+ "[W] Received message with unknown type '%c'.\n",
+ msg_buffer.type
+ );
break;
}
}