2 #include <ossia/dataflow/execution/execution_policy.hpp>
3 #include <ossia/network/base/bundle.hpp>
5 #include <blockingconcurrentqueue.h>
12 struct direct_execution_state_policy : execution_state_policy
14 direct_execution_state_policy();
15 ~direct_execution_state_policy();
17 void commit()
override;
19 void clear_local_state()
override;
21 bool find_and_copy(net::parameter_base& addr, inlet& in)
override;
22 bool in_local_scope(net::parameter_base& other)
const override;
25 void insert(ossia::audio_parameter& dest,
const audio_port& v)
override;
26 void insert(ossia::net::midi::midi_parameter& dest,
const midi_port& v)
override;
28 void process_messages();
31 struct T : moodycamel::ConcurrentQueueDefaultTraits
33 static constexpr std::size_t CQ_BLOCK_SIZE = 2048;
36 moodycamel::BlockingConcurrentQueue<ossia::bundle_element, T> m_messagesToApply;
38 static constexpr
int max_threads = 16;
42 } m_threads[max_threads];
44 std::thread m_midiThread;
46 std::atomic_bool m_startFlag{};
47 std::atomic_bool m_stopFlag{};
51 const ossia::audio_port* src{};
52 ossia::audio_parameter* dst{};
54 ossia::mpmc_queue<audio_msg> m_audioQueue;
58 const ossia::midi_port* src{};
59 ossia::net::midi::midi_parameter* dst{};
61 ossia::mpmc_queue<midi_msg> m_midiQueue;
The parameter_base class.
Definition: ossia/network/base/parameter.hpp:48