pub struct ScatterProcessor { /* private fields */ }Expand description
Scatter processor: distributes arrays to downstream plugins in round-robin order.
The actual number of downstream consumers is discovered by the plugin
runtime, which publishes a scatter result to scatter_index % senders.len().
num_outputs == 0 (the default) means “use the live downstream count”: the
processor emits a raw incrementing index and the runtime maps it onto the
connected consumers — equivalent to C++ NDPluginScatter advancing
nextScatter over its registered clients. A non-zero num_outputs caps the
round-robin span for tests / fixed fan-out.
Implementations§
Source§impl ScatterProcessor
impl ScatterProcessor
pub fn new() -> Self
Sourcepub fn set_num_outputs(&mut self, n: usize)
pub fn set_num_outputs(&mut self, n: usize)
Override the round-robin span. 0 means “use the live downstream
consumer count” (the default).
Trait Implementations§
Source§impl Default for ScatterProcessor
impl Default for ScatterProcessor
Source§impl NDPluginProcess for ScatterProcessor
impl NDPluginProcess for ScatterProcessor
Source§fn process_array(
&mut self,
array: &NDArray,
_pool: &NDArrayPool,
) -> ProcessResult
fn process_array( &mut self, array: &NDArray, _pool: &NDArrayPool, ) -> ProcessResult
Process one array. Return output arrays and param updates.
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Plugin type name for PLUGIN_TYPE param.
Source§fn register_params(&mut self, base: &mut PortDriverBase) -> AsynResult<()>
fn register_params(&mut self, base: &mut PortDriverBase) -> AsynResult<()>
Register plugin-specific params on the base. Called once during construction.
Source§fn on_param_change(
&mut self,
reason: usize,
params: &PluginParamSnapshot,
) -> ParamChangeResult
fn on_param_change( &mut self, reason: usize, params: &PluginParamSnapshot, ) -> ParamChangeResult
Called when a param changes. Reason is the param index.
Return param updates to be written back to the port driver.
Source§fn compression_aware(&self) -> bool
fn compression_aware(&self) -> bool
Whether this plugin can process compressed (
codec != None) arrays
(C++ compressionAware_, G3). Defaults to false: a plugin that
operates on raw pixels must not be handed compressed bytes — the
runtime drops compressed input and counts it into DroppedArrays.
A codec/file plugin that understands compressed data overrides this.Auto Trait Implementations§
impl Freeze for ScatterProcessor
impl RefUnwindSafe for ScatterProcessor
impl Send for ScatterProcessor
impl Sync for ScatterProcessor
impl Unpin for ScatterProcessor
impl UnsafeUnpin for ScatterProcessor
impl UnwindSafe for ScatterProcessor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more