#pragma once #include "types.h" #include "submitter.h" #include "sender.h" #include #include namespace midi_router { struct Device_Connection : public Sender { Device_Connection(Device_Id const & source_id, std::string const & device_name, Submitter & submitter, RtMidiIn::RtMidiCallback callback): source_id(source_id), device_name(device_name), submitter(submitter) { midi_in.setCallback(callback, this); midi_in.ignoreTypes(true, false, true); } Device_Id const & source_id; std::string const & device_name; Submitter & submitter; RtMidiIn midi_in {}; RtMidiOut midi_out {}; void send(std::vector const & payload) override { midi_out.sendMessage(&payload); } std::string get_id() const override { return source_id; } void reconnect(std::size_t port) { midi_in.closePort(); midi_out.closePort(); midi_in.openPort(port); midi_out.openPort(port); } }; } // namespace midi_router