64 [[nodiscard]]
bool is_running()
const {
return m_running.load(); }
83 void enqueue_batch(
const std::vector<InputValue>& values);
97 const std::shared_ptr<Nodes::Input::InputNode>& node,
106 void unregister_node(
const std::shared_ptr<Nodes::Input::InputNode>& node);
111 void unregister_all_nodes();
116 [[nodiscard]]
size_t get_registered_node_count()
const;
122 [[nodiscard]] std::vector<std::shared_ptr<Nodes::Input::InputNode>> get_nodes()
const;
133 return m_events_processed.load();
139 [[nodiscard]]
size_t get_queue_depth()
const;
151 void processing_loop();
152 void dispatch_to_nodes(
const InputValue& value);
154 std::optional<InputBinding> resolve_vid_pid(
const InputBinding& binding,
const std::vector<InputDeviceInfo>& devices)
const;
157 std::atomic<bool> m_running {
false };
158 std::atomic<bool> m_stop_requested {
false };
164 std::atomic<bool> m_queue_notify {
false };
165 static constexpr size_t MAX_QUEUE_SIZE = 4096;
173 std::weak_ptr<Nodes::Input::InputNode>
node;
182#ifdef MAYAFLUX_PLATFORM_MACOS
184 std::atomic<const RegistrationList*> m_registrations {
nullptr };
187 static constexpr size_t MAX_READERS = 16;
188 mutable std::array<std::atomic<const RegistrationList*>, MAX_READERS> m_hazard_ptrs;
189 mutable std::atomic<size_t> m_hazard_counter { 0 };
191 void retire_list(
const RegistrationList* list);
200 void teardown_osc_bridge();
202 uint64_t m_osc_endpoint_id { 0 };
208 std::atomic<uint64_t> m_events_processed { 0 };
Policy-driven unified circular buffer implementation.
void register_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
void unregister_node(const std::shared_ptr< Nodes::Node > &node, const Nodes::ProcessingToken &token, uint32_t channel)
Removes a node from the root node of specified channels.
OSC backend configuration.
Backend network transport service interface.