pub trait DeviceFactory: Send + Sync {
// Required methods
fn protocol(&self) -> Protocol;
fn create(&self, config: DeviceConfig) -> Result<BoxedDevice>;
// Provided methods
fn create_batch(
&self,
configs: Vec<DeviceConfig>,
) -> Result<Vec<BoxedDevice>> { ... }
fn validate(&self, config: &DeviceConfig) -> Result<()> { ... }
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§
Sourcefn create(&self, config: DeviceConfig) -> Result<BoxedDevice>
fn create(&self, config: DeviceConfig) -> Result<BoxedDevice>
Create a device from configuration.
Provided Methods§
Sourcefn create_batch(&self, configs: Vec<DeviceConfig>) -> Result<Vec<BoxedDevice>>
fn create_batch(&self, configs: Vec<DeviceConfig>) -> Result<Vec<BoxedDevice>>
Create multiple devices from configurations.
Sourcefn validate(&self, config: &DeviceConfig) -> Result<()>
fn validate(&self, config: &DeviceConfig) -> Result<()>
Validate device configuration without creating the device.
Sourcefn metadata(&self) -> FactoryMetadata
fn metadata(&self) -> FactoryMetadata
Get factory metadata.