Skip to main content

DeviceFactory

Trait DeviceFactory 

Source
pub trait DeviceFactory: Send + Sync {
    // Required methods
    fn protocol(&self) -> Protocol;
    fn create(&self, config: DeviceConfig) -> Result<Box<dyn Device>, Error>;

    // Provided methods
    fn create_batch(
        &self,
        configs: Vec<DeviceConfig>,
    ) -> Result<Vec<Box<dyn Device>>, Error> { ... }
    fn validate(&self, config: &DeviceConfig) -> Result<(), Error> { ... }
    fn metadata(&self) -> FactoryMetadata { ... }
}
Expand description

A factory trait for creating devices.

Implement this trait to add support for new protocols or device types.

§Example

struct ModbusDeviceFactory;

impl DeviceFactory for ModbusDeviceFactory {
    fn protocol(&self) -> Protocol {
        Protocol::ModbusTcp
    }

    fn create(&self, config: DeviceConfig) -> Result<BoxedDevice> {
        Ok(Box::new(ModbusDevice::new(config)?))
    }
}

Required Methods§

Source

fn protocol(&self) -> Protocol

Get the protocol this factory handles.

Source

fn create(&self, config: DeviceConfig) -> Result<Box<dyn Device>, Error>

Create a device from configuration.

Provided Methods§

Source

fn create_batch( &self, configs: Vec<DeviceConfig>, ) -> Result<Vec<Box<dyn Device>>, Error>

Create multiple devices from configurations.

Source

fn validate(&self, config: &DeviceConfig) -> Result<(), Error>

Validate device configuration without creating the device.

Source

fn metadata(&self) -> FactoryMetadata

Get factory metadata.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl DeviceFactory for KnxDeviceFactory

Source§

fn protocol(&self) -> Protocol

Source§

fn create(&self, config: DeviceConfig) -> Result<Box<dyn Device>, Error>

Implementors§