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