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;
127 return m_events_processed.load();
133 [[nodiscard]]
size_t get_queue_depth()
const;
145 void processing_loop();
146 void dispatch_to_nodes(
const InputValue& value);
148 std::optional<InputBinding> resolve_vid_pid(
const InputBinding& binding,
const std::vector<InputDeviceInfo>& devices)
const;
151 std::atomic<bool> m_running {
false };
152 std::atomic<bool> m_stop_requested {
false };
158 std::atomic<bool> m_queue_notify {
false };
159 static constexpr size_t MAX_QUEUE_SIZE = 4096;
167 std::weak_ptr<Nodes::Input::InputNode>
node;
176#ifdef MAYAFLUX_PLATFORM_MACOS
178 std::atomic<const RegistrationList*> m_registrations {
nullptr };
181 static constexpr size_t MAX_READERS = 16;
182 mutable std::array<std::atomic<const RegistrationList*>, MAX_READERS> m_hazard_ptrs;
183 mutable std::atomic<size_t> m_hazard_counter { 0 };
185 void retire_list(
const RegistrationList* list);
194 void teardown_osc_bridge();
196 uint64_t m_osc_endpoint_id { 0 };
202 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.