| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-31 16:21:24 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-31 16:21:24 +0100 |
| commit | 509ac16d892aeb5091f68620247f6815d2e4b5f5 (patch) | |
| tree | c4adebce7791c10c4c362b77f32d4a339e8c8125 /src/server/server_worker.c | |
| parent | 1373211465c34015ee900e097aa87fbffb401187 (diff) | |
Switched to sockets, continuing implementation...
Diffstat (limited to 'src/server/server_worker.c')
| -rw-r--r-- | src/server/server_worker.c | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/src/server/server_worker.c b/src/server/server_worker.c index 04f71ca..f6378e0 100644 --- a/src/server/server_worker.c +++ b/src/server/server_worker.c @@ -1,21 +1,62 @@ -#include "worker.h" +#include <signal.h> +#include <string.h> +#include <stdio.h> -void ZoO_worker_initialize_parameters +#include "server.h" + +static void initialize +( + struct ZoO_server_worker worker [const restrict static 1], + void * input +) +{ + memcpy + ( + (void *) &(worker->params), + (const void *) input, + sizeof(struct ZoO_server_thread_parameters) + ); + + pthread_barrier_wait(&(worker->params.thread_collection->barrier)); + + worker->buffer = (char *) NULL; + worker->buffer_capacity = 0; + worker->buffer_length = 0; +} + +static void finalize ( - struct ZoO_worker_parameters worker_params; - const struct ZoO_server_message msg_buffer [const restrict static 1], - const struct ZoO_parameters params [const restrict static 1] + struct ZoO_server_worker worker [const restrict static 1] ) { - worker_params->thread_id = 0; - pthread_barrier_t * barrier; - mqd_t * server_mailbox; - const struct ZoO_pipe_names * pipe_names; + pthread_mutex_lock(&(worker->params.thread_collection->mutex)); + + worker->params.thread_collection->threads[worker->params.thread_id].state = + ZoO_SERVER_JOINING_THREAD; + + pthread_mutex_unlock(&(worker->params.thread_collection->mutex)); +} + +void * ZoO_server_worker_main (void * input) +{ + struct ZoO_server_worker worker; + + initialize(&worker, input); + + while (ZoO_server_is_running()) + { + if (ZoO_server_worker_receive(&worker) < 0) + { + break; + } + + if (ZoO_server_worker_handle_request(&worker) < 0) + { + break; + } + } - /* Program data */ - ZoO_index markov_order; - struct ZoO_knowledge * k; - const char * storage_filename; + finalize(&worker); - /* TODO */ + return NULL; } |


