summaryrefslogtreecommitdiff
path: root/src/base/state.h
diff options
context:
space:
mode:
authordautor <karlo98.m@gmail.com>2024-11-16 13:22:54 +0100
committerdautor <karlo98.m@gmail.com>2024-11-16 17:54:38 +0100
commit47778ccd67cbb3fb70dda706911d3166038ca010 (patch)
tree906bf0537d14f5ce8e2528736fb89a3499ada214 /src/base/state.h
Import project
Diffstat (limited to 'src/base/state.h')
-rw-r--r--src/base/state.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/base/state.h b/src/base/state.h
new file mode 100644
index 0000000..3bbccb5
--- /dev/null
+++ b/src/base/state.h
@@ -0,0 +1,72 @@
+#pragma once
+
+#include "../jprint.h"
+
+struct
+{
+ char *Address;
+ char *Hook;
+} typedef endpoint;
+
+struct
+{
+ char *Node;
+ char *Interface;
+} typedef endpoint_configuration;
+
+struct
+{
+ endpoint_configuration Peer[2];
+} typedef link_configuration;
+
+struct
+{
+ char *Name;
+ link_configuration Configuration;
+ endpoint Peer[2];
+} typedef link_;
+
+struct
+{
+ char *Module;
+ ucl_object_t *Configuration;
+} typedef node_configuration;
+
+struct
+{
+ char *Name;
+ node_configuration Configuration;
+ ucl_object_t *Data;
+} typedef node;
+
+struct
+{
+ size_t NodeCount;
+ node *Node;
+ size_t LinkCount;
+ link_ *Link;
+} typedef experiment;
+
+void Free_endpoint(endpoint *);
+void Free_endpoint_configuration(endpoint_configuration *);
+void Free_link_configuration(link_configuration *);
+void Free_link(link_ *);
+void Free_node_configuration(node_configuration *);
+void Free_node(node *);
+void Free_experiment(experiment *);
+
+char *Parse_endpoint(endpoint *, ucl_object_t const *, char const *Position);
+char *Parse_endpoint_configuration(endpoint_configuration *, ucl_object_t const *, char const *Position);
+char *Parse_link_configuration(link_configuration *, ucl_object_t const *, char const *Position);
+char *Parse_link(link_ *, ucl_object_t const *, char const *Position);
+char *Parse_node_configuration(node_configuration *, ucl_object_t const *, char const *Position);
+char *Parse_node(node *, ucl_object_t const *, char const *Position);
+char *Parse_experiment(experiment *, ucl_object_t const *, char const *Position);
+
+void Save_endpoint(jprint_state *, endpoint const *);
+void Save_endpoint_configuration(jprint_state *, endpoint_configuration const *);
+void Save_link_configuration(jprint_state *, link_configuration const *);
+void Save_link(jprint_state *, link_ const *);
+void Save_node_configuration(jprint_state *, node_configuration const *);
+void Save_node(jprint_state *, node const *);
+void Save_experiment(jprint_state *, experiment const *);