diff options
Diffstat (limited to 'mmss/mmss.cpp')
-rw-r--r-- | mmss/mmss.cpp | 49 |
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); |