| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-29 19:54:26 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-29 19:54:26 +0100 |
| commit | 1373211465c34015ee900e097aa87fbffb401187 (patch) | |
| tree | 8ffa1f9296097c91627c05874fcf4559cac45de7 /src/server | |
| parent | df3657b2a99ef20da99ac3c6c02f43cc23e70fca (diff) | |
Trying out ACSL, continuing implementation.
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/server/server.c | 28 | ||||
| -rw-r--r-- | src/server/server.h | 11 | ||||
| -rw-r--r-- | src/server/server_add_server_worker.c | 13 | ||||
| -rw-r--r-- | src/server/server_types.h | 9 | ||||
| -rw-r--r-- | src/server/server_worker.c | 21 | ||||
| -rw-r--r-- | src/server/server_worker.h | 8 | ||||
| -rw-r--r-- | src/server/server_worker_types.h | 27 |
8 files changed, 109 insertions, 16 deletions
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt new file mode 100644 index 0000000..2d1beaa --- /dev/null +++ b/src/server/CMakeLists.txt @@ -0,0 +1,8 @@ +set( + SRC_FILES ${SRC_FILES} + ${CMAKE_CURRENT_SOURCE_DIR}/server.c + ${CMAKE_CURRENT_SOURCE_DIR}/server_worker.c +) + +set(SRC_FILES ${SRC_FILES} PARENT_SCOPE) + 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, + ¶ms + ); + 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; } } diff --git a/src/server/server.h b/src/server/server.h index a75c6e7..f6aa0de 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -1,7 +1,7 @@ #ifndef _ZoO_SERVER_SERVER_H_ #define _ZoO_SERVER_SERVER_H_ -#include "../cli/parameters_types.h" +#include "../parameters/parameters_types.h" #include "server_types.h" @@ -24,13 +24,14 @@ int ZoO_server_receive_message struct ZoO_server_message msg_buffer [const restrict static 1] ); -int ZoO_server_new_client +int ZoO_server_add_worker ( - struct ZoO_server [const restrict static 1], - struct ZoO_server_message msg_buffer [const restrict static 1] + struct ZoO_server s [const restrict static 1], + struct ZoO_server_message msg_buffer [const restrict static 1], + struct ZoO_worker_parameters worker_params [const restrict static 1] ); -int ZoO_server_join_thread +int ZoO_server_finalize_worker ( struct ZoO_server [const restrict static 1], struct ZoO_server_message msg_buffer [const restrict static 1] diff --git a/src/server/server_add_server_worker.c b/src/server/server_add_server_worker.c new file mode 100644 index 0000000..cae10fd --- /dev/null +++ b/src/server/server_add_server_worker.c @@ -0,0 +1,13 @@ +#include <pthread.h> + +#include "server.h" + +int ZoO_server_add_worker +( + struct ZoO_server s [const restrict static 1], + struct ZoO_server_message msg_buffer [const restrict static 1] +) +{ + /* TODO */ + return -1; +} diff --git a/src/server/server_types.h b/src/server/server_types.h index 75016d4..aeb0ec8 100644 --- a/src/server/server_types.h +++ b/src/server/server_types.h @@ -5,24 +5,21 @@ #include "../core/index.h" -struct ZoO_server_pipes_data -{ - char request_pipe[255]; - char reply_pipe[255]; -}; +#include "../pipe/pipe_types.h" struct ZoO_server_message { char type; union { - struct ZoO_server_pipes_data pipes_name; + struct ZoO_pipe_names pipe_names; ZoO_index pthread_id; } data; }; struct ZoO_server { + /* TODO: insert 2 thread barrier. */ mqd_t mailbox; ZoO_index running_threads; }; diff --git a/src/server/server_worker.c b/src/server/server_worker.c new file mode 100644 index 0000000..04f71ca --- /dev/null +++ b/src/server/server_worker.c @@ -0,0 +1,21 @@ +#include "worker.h" + +void ZoO_worker_initialize_parameters +( + 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] +) +{ + worker_params->thread_id = 0; + pthread_barrier_t * barrier; + mqd_t * server_mailbox; + const struct ZoO_pipe_names * pipe_names; + + /* Program data */ + ZoO_index markov_order; + struct ZoO_knowledge * k; + const char * storage_filename; + + /* TODO */ +} diff --git a/src/server/server_worker.h b/src/server/server_worker.h new file mode 100644 index 0000000..825cc11 --- /dev/null +++ b/src/server/server_worker.h @@ -0,0 +1,8 @@ +#ifndef _ZoO_WORKER_WORKER_H_ +#define _ZoO_WORKER_WORKER_H_ + +#include "../parameters/parameters_types.h" + +#include "worker_types.h" + +#endif diff --git a/src/server/server_worker_types.h b/src/server/server_worker_types.h new file mode 100644 index 0000000..07757bd --- /dev/null +++ b/src/server/server_worker_types.h @@ -0,0 +1,27 @@ +#ifndef _ZoO_WORKER_WORKER_TYPES_H_ +#define _ZoO_WORKER_WORKER_TYPES_H_ + +#include <mqueue.h> + +#include "../core/index_types.h" + +#include "../pipes/pipes_types.h" + +#include "../knowledge/knowledge_types.h" + + +struct ZoO_worker_parameters +{ + /* Communication data */ + ZoO_index thread_id; + pthread_barrier_t * barrier; + mqd_t * server_mailbox; + const struct ZoO_pipe_names * pipe_names; + + /* Program data */ + ZoO_index markov_order; + struct ZoO_knowledge * k; + const char * storage_filename; +}; + +#endif |


