summaryrefslogtreecommitdiff
path: root/src/base/state.h
blob: 3bbccb543fef5da98872e9115cee90f22d7cd074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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 *);