summaryrefslogtreecommitdiffstats
path: root/mmss/mmss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mmss/mmss.cpp')
-rw-r--r--mmss/mmss.cpp49
1 files changed, 21 insertions, 28 deletions
diff --git a/mmss/mmss.cpp b/mmss/mmss.cpp
index cb50329..1d918e4 100644
--- a/mmss/mmss.cpp
+++ b/mmss/mmss.cpp
@@ -30,25 +30,11 @@
#include <cstdio>
-gmrf_time_t gmrf_now(gmrf_t *gmrf) {
- return gmrf->mmss->now;
-}
-
-void gmrf_random_bytes(gmrf_t *gmrf, void *buffer, size_t len) {
- uint8_t *data = reinterpret_cast<uint8_t*>(buffer);
-
- size_t i;
- for (i = 0; i < len; i++)
- data[i] = rand_r(&gmrf->rand_seed);
-}
-
namespace MMSS {
-static void init_nodes(gmrf_t *nodes) {
- gmrf_t *node;
- for (node = nodes; node; node = node->next) {
- node->ctx = node->proto->init(node);
- }
+static void init_nodes(std::list<std::shared_ptr<node_t>> &nodes) {
+ for (auto node : nodes)
+ node->ctx = node->proto->init(node.get());
}
@@ -85,22 +71,29 @@ void main(int argc, char *argv[]) {
read_config(&mmss, &conf, "babel_test.mmss");
- network_t net0 = { .mtu = 1500 }, net1 = { .mtu = 1500 };
- gmrf_t node1 = { .name = strdup("node1"), .mmss = &mmss, .rand_seed = 1, .proto = proto };
- gmrf_t node2 = { .name = strdup("node2"), .mmss = &mmss, .rand_seed = 2, .proto = proto };
- gmrf_t node3 = { .name = strdup("node3"), .mmss = &mmss, .rand_seed = 3, .proto = proto };
+ std::shared_ptr<network_t> net0 = std::make_shared<network_t>();
+ std::shared_ptr<network_t> net1 = std::make_shared<network_t>();
+
+ *net0 = (network_t){ .mtu = 1500 };
+ *net1 = (network_t){ .mtu = 1500 };
+
+ std::shared_ptr<node_t> node1 = node_t::create(&mmss, "node1", 1, proto);
+ std::shared_ptr<node_t> node2 = node_t::create(&mmss, "node2", 2, proto);
+ std::shared_ptr<node_t> node3 = node_t::create(&mmss, "node3", 3, proto);
+
+ std::list<std::shared_ptr<node_t>> nodes;
- node2.next = &node1;
- node3.next = &node2;
- gmrf_t *nodes = &node3;
+ nodes.push_back(node1);
+ nodes.push_back(node2);
+ nodes.push_back(node3);
init_nodes(nodes);
gmrf_addr_t addr1 = {{1}}, addr2 = {{2}}, addr3 = {{3}}, addr4 = {{4}};
- add_iface(&node1, &net0, "mmss0", &addr1);
- add_iface(&node2, &net0, "mmss0", &addr2);
- add_iface(&node2, &net1, "mmss1", &addr3);
- add_iface(&node3, &net1, "mmss1", &addr4);
+ add_iface(node1, net0, "mmss0", &addr1);
+ add_iface(node2, net0, "mmss0", &addr2);
+ add_iface(node2, net1, "mmss1", &addr3);
+ add_iface(node3, net1, "mmss1", &addr4);
while (true) {
int timeout = get_queue_timeout(&mmss);