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.

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>

Source§

impl DeviceFactory for OpcUaDeviceFactory

Implementors§