aboutsummaryrefslogtreecommitdiffstats
path: root/daemon/src/routing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/src/routing.cpp')
-rw-r--r--daemon/src/routing.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/daemon/src/routing.cpp b/daemon/src/routing.cpp
index 709d815..15ae555 100644
--- a/daemon/src/routing.cpp
+++ b/daemon/src/routing.cpp
@@ -1,14 +1,27 @@
#include "routing.h"
+#include <chrono>
#include <iostream>
namespace midi_router
{
void
-Router::route(Route_Map const & config) const
+Router::route(Route_Map const & config)
{
+ Message m;
+ if (m_queue.wait_dequeue_timed(m, std::chrono::milliseconds(500)))
+ {
+ if (!config.contains(*m.source_id) || !config.at(*m.source_id).contains(m.type()))
+ {
+ return;
+ }
+ for (auto const & target: config.at(*m.source_id).at(m.type()))
+ {
+ target(m.bytes);
+ }
+ }
}
void