3#include <ossia/detail/hash_map.hpp>
4#include <ossia/detail/thread.hpp>
5#include <ossia/detail/variant.hpp>
6#include <ossia/network/base/protocol.hpp>
7#include <ossia/network/common/complex_type.hpp>
8#include <ossia/network/common/device_parameter.hpp>
9#include <ossia/network/domain/domain.hpp>
10#include <ossia/network/oscquery/oscquery_server.hpp>
12#include <concurrentqueue.h>
16typedef void* mpr_graph;
17typedef void* mpr_device;
18typedef void* mpr_signal;
19typedef void* mpr_link;
21typedef void* mpr_slot;
22typedef void* mpr_network;
23typedef void* mpr_database;
24typedef void* mpr_queue;
25typedef int mpr_signal_group;
33 libmapper_server_protocol();
34 libmapper_server_protocol(
const libmapper_server_protocol&) =
delete;
35 libmapper_server_protocol(libmapper_server_protocol&&) =
delete;
36 libmapper_server_protocol& operator=(
const libmapper_server_protocol&) =
delete;
37 libmapper_server_protocol& operator=(libmapper_server_protocol&&) =
delete;
38 ~libmapper_server_protocol()
override;
51 template <
typename OssiaType,
typename LibmapperType>
52 void create_1d_parameter(
const parameter_base& p);
53 template <std::
size_t N>
54 void create_array_parameter(
const parameter_base& p);
55 void create_vector_parameter(
const parameter_base& p);
56 friend struct libmapper_create_param;
57 friend struct libmapper_apply_control;
71 mpr_device m_mapper_dev{};
73 ossia::hash_map<const ossia::net::parameter_base*, mpr_signal> m_inputMap;
74 ossia::hash_map<const ossia::net::parameter_base*, mpr_signal> m_outputMap;
77 std::atomic_bool m_running{};
85 moodycamel::ConcurrentQueue<Message> m_sendQueue;
95 using ControlMessage = ossia::variant<CreateSignal, RemoveSignal>;
96 moodycamel::ConcurrentQueue<ControlMessage> m_ctlQueue;
98 std::atomic_int m_editSemaphore{};
104 explicit libmapper_client_protocol(std::string device);
105 libmapper_client_protocol(
const libmapper_client_protocol&) =
delete;
106 libmapper_client_protocol(libmapper_client_protocol&&) =
delete;
107 libmapper_client_protocol& operator=(
const libmapper_client_protocol&) =
delete;
108 libmapper_client_protocol& operator=(libmapper_client_protocol&&) =
delete;
109 ~libmapper_client_protocol()
override;
120 void stop()
override;
127 std::string m_mapper_dev_name;
130 mpr_device m_mapper_dev{};
132 ossia::hash_map<const ossia::net::parameter_base*, mpr_signal> m_inputMap;
133 ossia::hash_map<const ossia::net::parameter_base*, mpr_signal> m_outputMap;
Root of a device tree.
Definition ossia/network/base/device.hpp:58
The node_base class.
Definition node.hpp:48
The parameter_base class.
Definition ossia/network/base/parameter.hpp:48
The protocol_base class.
Definition protocol.hpp:40
The value class.
Definition value.hpp:173
Full information about a parameter.
Definition parameter_data.hpp:61