#include "routing.h" #include #include namespace midi_router { void 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; } // LTG: at least one of these map accesses can be avoided for (auto const & target: config.at(*m.source_id).at(m.type())) { target.get().send(m.bytes); } } } void Router::submit(Message const & message) { if (!m_queue.try_enqueue(message)) { std::cerr << "Failed to enqueue message from " << *message.source_id << "\n"; } } } // namespace midi_router