Skip to main content

ModuleFactory

Struct ModuleFactory 

Source
pub struct ModuleFactory { /* private fields */ }
Expand description

Registry that maps module type names to constructors.

Implementations§

Source§

impl ModuleFactory

Source

pub fn new() -> Self

Creates an empty module factory.

Source

pub fn register(&mut self, ctor: impl ModuleConstructor + 'static)

Adds a typed constructor to the registry, keyed by its type name.

Source

pub fn register_fn( &mut self, type_name: impl Into<String>, drain: Drain, make_handler: impl Fn(&str, &HashMap<String, ParamValue>, &ActorRef<CommandEnum>) -> Box<dyn FnMut(CommandEnum) + 'static> + Send + Sync + 'static, )

Register a closure-based constructor (handler: !Send).

make_handler receives module params and the graph handle, and returns the message handler closure. The factory calls it inside the drain thread, so the handler does not need Send.

Source

pub fn register_fn_send( &mut self, type_name: impl Into<String>, drain: Drain, make_handler: impl Fn(&str, &HashMap<String, ParamValue>, &ActorRef<CommandEnum>) -> Box<dyn FnMut(CommandEnum) + Send + 'static> + Send + Sync + 'static, )

Register a closure-based constructor (handler: Send, for Drain::TokioTask).

The returned handler must be Send so it can be stored in a tokio future.

Source

pub fn construct( &self, module: &ModuleDef, automaton_defs: &[AutomatonDef], system: &Arc<ActorSystem>, graph_ref: &ActorRef<CommandEnum>, ) -> Result<ActorRef<CommandEnum>, ModuleError>

Looks up a type name and constructs the corresponding module actor.

Source

pub fn contains(&self, type_name: &str) -> bool

Checks whether a type name is registered.

Source

pub fn len(&self) -> usize

Returns the number of registered module types.

Source

pub fn is_empty(&self) -> bool

Returns true if no module types are registered.

Trait Implementations§

Source§

impl Default for ModuleFactory

Source§

fn default() -> Self

Returns the “default value” for a type. 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> AsAny for T
where T: 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert to &dyn std::any::Any
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert to &mut dyn std::any::Any
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V