summaryrefslogtreecommitdiffstats
path: root/mmss/gmrf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mmss/gmrf.cpp')
-rw-r--r--mmss/gmrf.cpp24
1 files changed, 3 insertions, 21 deletions
diff --git a/mmss/gmrf.cpp b/mmss/gmrf.cpp
index c83b184..b97f1e5 100644
--- a/mmss/gmrf.cpp
+++ b/mmss/gmrf.cpp
@@ -27,7 +27,6 @@
#include "context.hpp"
#include "event.hpp"
#include "iface.hpp"
-#include "network.hpp"
#include "node.hpp"
@@ -48,25 +47,13 @@ size_t gmrf_iface_get_mtu(gmrf_t *gmrf, gmrf_iface_t *iface) {
}
bool gmrf_iface_send(gmrf_t *gmrf, gmrf_iface_t *iface, const void *data, size_t len, const gmrf_addr_t *dest) {
- auto src_iface = static_cast<iface_t*>(iface)->shared_from_this();
-
- for (auto dest_iface : src_iface->get_network()->interfaces) {
- if (gmrf_addr_equal(dest_iface->get_address(), dest)) {
- enqueue(static_cast<node_t*>(gmrf)->get_context(), src_iface, dest_iface, data, len);
- break;
- }
- }
+ static_cast<iface_t*>(iface)->send(data, len, dest);
return true;
}
bool gmrf_iface_send_bc(gmrf_t *gmrf, gmrf_iface_t *iface, const void *data, size_t len) {
- auto src_iface = static_cast<iface_t*>(iface)->shared_from_this();
-
- for (auto dest_iface : src_iface->get_network()->interfaces) {
- if (dest_iface != src_iface)
- enqueue(static_cast<node_t*>(gmrf)->get_context(), src_iface, dest_iface, data, len);
- }
+ static_cast<iface_t*>(iface)->send_bc(data, len);
return true;
}
@@ -74,12 +61,7 @@ bool gmrf_iface_send_bc(gmrf_t *gmrf, gmrf_iface_t *iface, const void *data, siz
void gmrf_schedule(gmrf_t *gmrf, gmrf_scheduled_func f, void *arg, unsigned delay) {
node_t *node = static_cast<node_t*>(gmrf);
- std::shared_ptr<scheduled_t> scheduled = std::make_shared<scheduled_t>();
-
- scheduled->node = node->shared_from_this();
- scheduled->f = f;
- scheduled->arg = arg;
-
+ std::shared_ptr<scheduled_t> scheduled = std::make_shared<scheduled_t>(node->shared_from_this(), f, arg);
node->get_context()->queue_event(std::move(scheduled), node->get_context()->now()+delay);
}