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§
Provided Methods§
Sourcefn create_batch(
&self,
configs: Vec<DeviceConfig>,
) -> Result<Vec<Box<dyn Device>>, Error>
fn create_batch( &self, configs: Vec<DeviceConfig>, ) -> Result<Vec<Box<dyn Device>>, Error>
Create multiple devices from configurations.
Sourcefn validate(&self, config: &DeviceConfig) -> Result<(), Error>
fn validate(&self, config: &DeviceConfig) -> Result<(), Error>
Validate device configuration without creating the device.
Sourcefn metadata(&self) -> FactoryMetadata
fn metadata(&self) -> FactoryMetadata
Get factory metadata.