Skip to content
Snippets Groups Projects
dummy.rs 1.23 KiB
Newer Older
use std::collections::HashMap;

use crate::analyzer::AnalyzerType;
use crate::error::OpossumError;
use crate::optic_node::{Dottable, LightResult, Optical};
Udo Eisenbarth's avatar
Udo Eisenbarth committed
use crate::optic_ports::OpticPorts;
type Result<T> = std::result::Result<T, OpossumError>;

Udo Eisenbarth's avatar
Udo Eisenbarth committed
/// 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.
Udo Eisenbarth's avatar
Udo Eisenbarth committed
///
/// ## Optical Ports
///   - Inputs
///     - `front`
///   - Outputs
///     - `rear`
Udo Eisenbarth's avatar
Udo Eisenbarth committed
pub struct Dummy;
Udo Eisenbarth's avatar
Udo Eisenbarth committed
impl Optical for Dummy {
    /// Returns "dummy" as node type.
    fn node_type(&self) -> &str {
        "dummy"
Udo Eisenbarth's avatar
Udo Eisenbarth committed
    fn ports(&self) -> OpticPorts {
        let mut ports = OpticPorts::new();
Udo Eisenbarth's avatar
Udo Eisenbarth committed
        ports.add_input("front").unwrap();
        ports.add_output("rear").unwrap();
        ports
    }

    fn analyze(
        &mut self,
        incoming_data: LightResult,
        _analyzer_type: &AnalyzerType,
    ) -> Result<LightResult> {
        if let Some(data) = incoming_data.get("front") {
            Ok(HashMap::from([("rear".into(), data.clone())]))
        } else {
            Ok(HashMap::from([("rear".into(), None)]))
        }
    }
impl Dottable for Dummy {}