Newer
Older
use std::collections::HashMap;
use crate::analyzer::AnalyzerType;
use crate::error::OpossumError;
use crate::optic_node::{Dottable, LightResult, Optical};
type Result<T> = std::result::Result<T, OpossumError>;
/// A fake / dummy component without any optical functionality.
///
/// Any [`LightResult`] is directly forwarded without any modification. It is mainly used for
/// development and debugging purposes.
///
/// ## Optical Ports
/// - Inputs
/// - `front`
/// - Outputs
/// - `rear`
pub struct Dummy {
is_inverted: bool,
}
let mut ports = OpticPorts::new();
ports.add_input("front").unwrap();
ports.add_output("rear").unwrap();
ports
}
fn analyze(
&mut self,
incoming_data: LightResult,
_analyzer_type: &AnalyzerType,
) -> Result<LightResult> {
if !self.is_inverted {
if let Some(data) = incoming_data.get("front") {
Ok(HashMap::from([("rear".into(), data.clone())]))
} else {
Ok(HashMap::from([("rear".into(), None)]))
}
} else if let Some(data) = incoming_data.get("rear") {
Ok(HashMap::from([("front".into(), data.clone())]))
fn set_inverted(&mut self, inverted: bool) {