8class DataProcessingChain;
128 std::function<
void(std::shared_ptr<SignalSourceContainer>,
ProcessingState)> callback)
248 virtual const std::vector<DataVariant>&
get_data() = 0;
Type-erased accessor for NDData with semantic view construction.
Abstract interface for N-dimensional data containers.
virtual void set_processing_chain(std::shared_ptr< DataProcessingChain > chain)=0
Set the processing chain for this container.
virtual std::vector< DataAccess > all_channel_data()=0
Get all channel data as accessors.
virtual void set_default_processor(std::shared_ptr< DataProcessor > processor)=0
Set the default data processor for this container.
virtual void process_default()=0
Process the container's data using the default processor.
virtual bool has_active_readers() const =0
Check if any dimensions currently have active readers.
virtual void mark_dimension_consumed(uint32_t dimension_index, uint32_t reader_id)=0
Mark a dimension as consumed for the current processing cycle.
virtual void mark_buffers_for_processing(bool should_process)=0
Mark associated buffers for processing in the next cycle.
virtual std::shared_ptr< DataProcessor > get_default_processor() const =0
Get the current default data processor.
virtual void update_processing_state(ProcessingState new_state)=0
Update the processing state of the container.
virtual void unregister_state_change_callback()=0
Unregister the state change callback, if any.
virtual std::vector< DataVariant > & get_processed_data()=0
Get a mutable reference to the processed data buffer.
virtual ProcessingState get_processing_state() const =0
Get the current processing state of the container.
virtual void mark_buffers_for_removal()=0
Mark associated buffers for removal from the system.
virtual void unregister_dimension_reader(uint32_t dimension_index)=0
Unregister a reader for a specific dimension.
virtual bool all_dimensions_consumed() const =0
Check if all active dimensions have been consumed in this cycle.
virtual void register_state_change_callback(std::function< void(std::shared_ptr< SignalSourceContainer >, ProcessingState)> callback)=0
Register a callback to be invoked on processing state changes.
virtual uint32_t register_dimension_reader(uint32_t dimension_index)=0
Register a reader for a specific dimension.
~SignalSourceContainer() override=default
virtual std::shared_ptr< DataProcessingChain > get_processing_chain()=0
Get the current processing chain for this container.
virtual bool is_ready_for_processing() const =0
Check if the container is ready for processing.
virtual const std::vector< DataVariant > & get_processed_data() const =0
Get a const reference to the processed data buffer.
virtual void create_default_processor()=0
Create and configure a default processor for this container.
virtual DataAccess channel_data(size_t channel_index)=0
Get channel data with semantic interpretation.
virtual const std::vector< DataVariant > & get_data()=0
Get a reference to the raw data stored in the container.
virtual void mark_ready_for_processing(bool ready)=0
Mark the container as ready or not ready for processing.
Data-driven interface for managing arbitrary processable signal sources.
ProcessingState
Represents the current processing lifecycle state of a container.
@ NEEDS_REMOVAL
Container is marked for removal from the system.
@ ERROR
Container is in an error state and cannot proceed.
@ PROCESSING
Container is actively being processed.
@ PROCESSED
Container has completed processing and results are available.
@ READY
Ready for processing.
@ IDLE
Not being processed.