rsiot::components

Module cmp_filesystem

Source
Expand description

Компонент для сохранения данных в файловой системе и загрузки данных из файловой системы

§Пример

§Файл config_filesystem/mod.rs

use rsiot::{
    components::cmp_filesystem::{BufferBound, CallFnOutputKind, Cmp, Config},
    serde_utils::SerdeAlgKind,
};
use serde::{Deserialize, Serialize};

use super::messages::*;

pub fn new() -> rsiot::executor::Component<Config<Msg, Buffer>, Msg> {
    let config_filesystem = Config::<Msg, Buffer> {
        filename: "examples/cmp_filesystem/test_files/test_file.json".into(),
        serde_alg: SerdeAlgKind::Json,
        call_fn_output_kind: CallFnOutputKind::Always,
        fn_input: |msg, buffer| match msg {
            Msg::InjPeriodic(InjPeriodic::Increase) => {
                let mut buffer = buffer.clone();
                buffer.counter = buffer.counter.wrapping_add(1);
                Some(buffer)
            }
            _ => None,
        },
        fn_output: |buffer| vec![Msg::Filesystem(Filesystem::Counter(buffer.counter))],
    };

    Cmp::new(config_filesystem)
}

#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct Buffer {
    pub counter: u64,
    pub internal_struct: InternalStruct,
}

impl BufferBound for Buffer {}

#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct InternalStruct {
    pub field: f64,
}

Structs§

  • Конфигурация cmp_filesystem

Enums§

  • Частота вызова функции создания исходящих сообщений

Traits§

  • Ограничения на структуру буфера

Type Aliases§

  • Компонент cmp_filesystem