Skip to main content

PluginRuntimeHandle

Struct PluginRuntimeHandle 

Source
pub struct PluginRuntimeHandle {
    pub ndarray_params: NDArrayDriverParams,
    pub plugin_params: PluginBaseParams,
    /* private fields */
}
Expand description

Handle to a running plugin runtime. Provides access to sender and port handle.

Fields§

§ndarray_params: NDArrayDriverParams§plugin_params: PluginBaseParams

Implementations§

Source§

impl PluginRuntimeHandle

Source

pub fn port_runtime(&self) -> &PortRuntimeHandle

Source

pub fn array_sender(&self) -> &NDArraySender

Source

pub fn array_output(&self) -> &Arc<Mutex<NDArrayOutput>>

Source

pub fn wait_params_applied(&self, timeout: Duration) -> bool

Block until the plugin’s data thread has applied every control-plane param change submitted before this call.

write_*_blocking on the port handle returns once the port actor has recorded the write and queued it for the data plane; the data thread applies it (the EnableCallbacks flip, NDArrayPort/NDArrayAddr rewiring, processor param updates) asynchronously. This is the fence between the two planes: it enqueues a barrier behind every already-queued change and waits for the data thread to acknowledge it — the param channel is FIFO, so the ack implies every earlier change is fully applied.

The ack additionally waits for the array queue to drain, so it also implies every array published before this call has been fully handled (processed or throttled). Under continuous array traffic the ack is therefore delayed until the queue momentarily empties.

Returns false if the data thread has exited or timeout elapsed.

Source

pub fn set_max_threads(&self, max_threads: i32)

Apply C’s maxThreads *Configure argument (NDPluginDriver.cpp:117, :158) to an already-built plugin.

In C this is a constructor argument and nothing else: writeInt32 has no MaxThreads arm, and MaxThreads_RBV is a longin with no output partner (NDPluginBase.template:290-295), so the configure line is an operator’s only route to the ceiling. create_plugin_runtime* takes no such argument, so the configure command applies it here instead.

It goes through the one owner allowed to assign max_threads — the data loop’s MAX_THREADS arm, which floors the value, clamps NumThreads to the new ceiling and writes both readbacks back. Seeding the shared state from a second site instead would let the ceiling the pool runs on drift from the one MaxThreads_RBV publishes, which is the one disagreement a reader of that record cannot detect.

Blocks until the data thread has applied it, so the ceiling is in place before the configure command returns, as it is in C.

Source

pub fn port_name(&self) -> &str

Trait Implementations§

Source§

impl Clone for PluginRuntimeHandle

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more