summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-01-29 19:54:26 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-01-29 19:54:26 +0100
commit1373211465c34015ee900e097aa87fbffb401187 (patch)
tree8ffa1f9296097c91627c05874fcf4559cac45de7 /src/server
parentdf3657b2a99ef20da99ac3c6c02f43cc23e70fca (diff)
Trying out ACSL, continuing implementation.
Diffstat (limited to 'src/server')
-rw-r--r--src/server/CMakeLists.txt8
-rw-r--r--src/server/server.c28
-rw-r--r--src/server/server.h11
-rw-r--r--src/server/server_add_server_worker.c13
-rw-r--r--src/server/server_types.h9
-rw-r--r--src/server/server_worker.c21
-rw-r--r--src/server/server_worker.h8
-rw-r--r--src/server/server_worker_types.h27
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,
+ &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;
}
}
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