| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-02-08 15:21:19 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-02-08 15:21:19 +0100 |
| commit | 9ca43c73ba29d6b42cd771f1567074418c883c3e (patch) | |
| tree | 1e3560f218c80fe1e343a647c1d0f177d2d16b0f /src | |
| parent | ee26b8ff850add4f83b912635a71dbde06f268d1 (diff) | |
Changes knowledge structure, defines protocol.
Diffstat (limited to 'src')
| -rw-r--r-- | src/knowledge/knowledge.c | 12 | ||||
| -rw-r--r-- | src/knowledge/knowledge.h | 5 | ||||
| -rw-r--r-- | src/main.c | 2 | ||||
| -rw-r--r-- | src/parameters/parameters.c | 28 | ||||
| -rw-r--r-- | src/parameters/parameters.h | 12 | ||||
| -rw-r--r-- | src/pipe/pipe.h | 4 | ||||
| -rw-r--r-- | src/sequence/sequence_to_string.c | 2 | ||||
| -rw-r--r-- | src/server/server.c | 4 | ||||
| -rw-r--r-- | src/server/server.h | 2 | ||||
| -rw-r--r-- | src/server/server_types.h | 10 | ||||
| -rw-r--r-- | src/server/server_worker.c | 31 | ||||
| -rw-r--r-- | src/server/server_worker_receive.c | 20 |
12 files changed, 114 insertions, 18 deletions
diff --git a/src/knowledge/knowledge.c b/src/knowledge/knowledge.c index c9bfc2a..5ce6917 100644 --- a/src/knowledge/knowledge.c +++ b/src/knowledge/knowledge.c @@ -56,3 +56,15 @@ void ZoO_knowledge_unlock_access { pthread_mutex_unlock(&(k->mutex)); } + +void ZoO_knowledge_get_word +( + const struct ZoO_knowledge k [const static 1], + const ZoO_index word_ref, + const ZoO_char * word [const restrict static 1], + ZoO_index word_length [const restrict static 1] +) +{ + *word = k->words[word_ref].word; + *word_length = k->words[word_ref].word_length; +} diff --git a/src/knowledge/knowledge.h b/src/knowledge/knowledge.h index 7f1bb42..e97d84e 100644 --- a/src/knowledge/knowledge.h +++ b/src/knowledge/knowledge.h @@ -61,13 +61,12 @@ int ZoO_knowledge_learn_markov_sequence const struct ZoO_pipe io [const restrict static 1] ); -int ZoO_knowledge_get_word +void ZoO_knowledge_get_word ( const struct ZoO_knowledge k [const static 1], const ZoO_index word_ref, const ZoO_char * word [const restrict static 1], - ZoO_index word_size [const restrict static 1], - const struct ZoO_pipe io [const restrict static 1] + ZoO_index word_length [const restrict static 1] ); /* @@ -18,7 +18,7 @@ static void print_help () "\nParameters:\n" " SESSION_NAME: valid POSIX message queue filename.\n" " MARKOV_ORDER: non-null positive integer.\n" - " STORAGE_FILE: file in which the knowledge will be stored.", + " STORAGE_FILE: file in which the knowledge will be stored.\n", ZoO_SERVER_VERSION, ZoO_PROTOCOL_VERSION ); diff --git a/src/parameters/parameters.c b/src/parameters/parameters.c index 82ac9d1..0e38e5e 100644 --- a/src/parameters/parameters.c +++ b/src/parameters/parameters.c @@ -29,9 +29,9 @@ static int parse_markov_order fprintf ( stderr, - "[F] Invalid or value for parameter 'MARKOV_ORDER', accepted" + "[F] Invalid or value for parameter 'MARKOV_ORDER', accepted " "range is " - "[1, %lli] (integer).", + "[1, %lli] (integer).\n", (long long int) ZoO_INDEX_MAX ); @@ -82,3 +82,27 @@ enum ZoO_invocation_objective ZoO_parameters_initialize return ZoO_PRINTS_HELP; } } + +const char * ZoO_parameters_get_session_name +( + const struct ZoO_parameters param [const restrict static 1] +) +{ + return param->session; +} + +ZoO_index ZoO_parameters_get_markov_order +( + const struct ZoO_parameters param [const restrict static 1] +) +{ + return param->markov_order; +} + +const char * ZoO_parameters_get_storage_filename +( + const struct ZoO_parameters param [const restrict static 1] +) +{ + return param->storage; +} diff --git a/src/parameters/parameters.h b/src/parameters/parameters.h index 7927ef7..b6d516c 100644 --- a/src/parameters/parameters.h +++ b/src/parameters/parameters.h @@ -3,7 +3,17 @@ #include "parameters_types.h" -char * ZoO_parameters_get_session_name +const char * ZoO_parameters_get_session_name +( + const struct ZoO_parameters param [const restrict static 1] +); + +ZoO_index ZoO_parameters_get_markov_order +( + const struct ZoO_parameters param [const restrict static 1] +); + +const char * ZoO_parameters_get_storage_filename ( const struct ZoO_parameters param [const restrict static 1] ); diff --git a/src/pipe/pipe.h b/src/pipe/pipe.h index 9b9445c..4616050 100644 --- a/src/pipe/pipe.h +++ b/src/pipe/pipe.h @@ -39,7 +39,7 @@ #endif #define ZoO_PRINT_STDERR(pipe, symbol, str, ...)\ - fprintf(pipe->out, "E [" symbol "]" ZoO_LOCATION " " str "\n", __VA_ARGS__); + fprintf(pipe->out, "[" symbol "] " ZoO_LOCATION " " str "\n", __VA_ARGS__); /* * Given that we use preprocessor contants as flags, we can expect the compilers @@ -96,7 +96,7 @@ /* For outputs without dynamic content (static). ******************************/ #define ZoO_PRINT_S_STDERR(pipe, symbol, str)\ - fprintf(pipe->out, "E [" symbol "]" ZoO_LOCATION " " str "\n"); + fprintf(pipe->out, "[" symbol "] " ZoO_LOCATION " " str "\n"); #define ZoO_S_DEBUG(pipe, flag, str)\ ZoO_ISOLATE\ diff --git a/src/sequence/sequence_to_string.c b/src/sequence/sequence_to_string.c index cec3af8..96bd521 100644 --- a/src/sequence/sequence_to_string.c +++ b/src/sequence/sequence_to_string.c @@ -110,7 +110,7 @@ static int add_word size_t insertion_point; (void) ZoO_knowledge_lock_access(k, io); - ZoO_knowledge_get_word(k, word_id, &word, &word_size, io); + ZoO_knowledge_get_word(k, word_id, &word, &word_size); (void) ZoO_knowledge_unlock_access(k, io); insertion_point = *destination_length; diff --git a/src/server/server.c b/src/server/server.c index 874f5eb..197faf6 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -26,7 +26,7 @@ int ZoO_server_main while (ZoO_server_is_running()) { - switch (ZoO_server_wait_for_new_event(&server)) + switch (ZoO_server_wait_for_event(&server)) { case 0: /* Timed out or signal'd. */ ZoO_server_handle_joining_threads(&server); @@ -60,7 +60,7 @@ int ZoO_server_main /* Waiting for the threads to join... */ while (server.workers.currently_running > 0) { - switch (ZoO_server_wait_for_new_event(&server)) + switch (ZoO_server_wait_for_event(&server)) { case 0: /* Timed out. */ case 1: /* New client attempted connection. */ diff --git a/src/server/server.h b/src/server/server.h index 36ec4ce..90103ed 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -28,7 +28,7 @@ int ZoO_server_main void ZoO_server_finalize (struct ZoO_server [const restrict static 1]); -int ZoO_server_wait_for_new_event +int ZoO_server_wait_for_event ( struct ZoO_server server [const restrict static 1] ); diff --git a/src/server/server_types.h b/src/server/server_types.h index fb78b77..1ba9f96 100644 --- a/src/server/server_types.h +++ b/src/server/server_types.h @@ -7,7 +7,11 @@ #include <pthread.h> #endif -#include "../core/index.h" +#include "../core/index_types.h" + +#include "../knowledge/knowledge_types.h" + +#include "../parameters/parameters_types.h" #include "../pipe/pipe_types.h" @@ -54,16 +58,18 @@ struct ZoO_server_thread_parameters { struct ZoO_server_thread_collection * thread_collection; const struct ZoO_parameters * server_params; + struct ZoO_knowledge * knowledge; ZoO_index thread_id; int socket; }; struct ZoO_server_worker { + struct ZoO_server_thread_parameters params; char * buffer; size_t buffer_capacity; size_t buffer_length; - struct ZoO_server_thread_parameters params; + FILE * socket_as_file; }; struct ZoO_server diff --git a/src/server/server_worker.c b/src/server/server_worker.c index f6378e0..bd3b5d1 100644 --- a/src/server/server_worker.c +++ b/src/server/server_worker.c @@ -1,10 +1,10 @@ -#include <signal.h> +#include <stdlib.h> #include <string.h> #include <stdio.h> #include "server.h" -static void initialize +static int initialize ( struct ZoO_server_worker worker [const restrict static 1], void * input @@ -22,6 +22,16 @@ static void initialize worker->buffer = (char *) NULL; worker->buffer_capacity = 0; worker->buffer_length = 0; + + worker->socket_as_file = fdopen(worker->params.socket, "w+"); + + if (worker->socket_as_file == (FILE *) NULL) + { + /* TODO: error message? */ + return -1; + } + + return 0; } static void finalize @@ -29,6 +39,23 @@ static void finalize struct ZoO_server_worker worker [const restrict static 1] ) { + if (worker->socket_as_file != (FILE *) NULL) + { + fclose(worker->socket_as_file); + + worker->socket_as_file = NULL; + } + + if (worker->buffer != (char *) NULL) + { + free((void *) worker->buffer); + + worker->buffer = (char *) NULL; + } + + worker->buffer_capacity = 0; + worker->buffer_length = 0; + pthread_mutex_lock(&(worker->params.thread_collection->mutex)); worker->params.thread_collection->threads[worker->params.thread_id].state = diff --git a/src/server/server_worker_receive.c b/src/server/server_worker_receive.c index 6e70159..4dc2fc7 100644 --- a/src/server/server_worker_receive.c +++ b/src/server/server_worker_receive.c @@ -1,11 +1,29 @@ #include "server.h" + int ZoO_server_worker_receive ( struct ZoO_server_worker worker [const restrict static 1] ) { - /* TODO */ + ssize_t received; + + received = + getline + ( + &(worker->buffer), + &(worker->buffer_capacity), + worker->socket_as_file + ); + + if (received == -1) + { + /* TODO: error message? */ + + return -1; + } + + worker->buffer_length = (size_t) received; return 0; } |


