rsiot/components/cmp_file_appender/config.rs
1use std::marker::PhantomData;
2
3use crate::message::MsgDataBound;
4
5/// Конфигурация компонента cmp_file_appender
6#[derive(Clone)]
7pub struct Config<TMsg, TFnInput>
8where
9 TMsg: MsgDataBound,
10 TFnInput: Fn(TMsg) -> ConfigAction + Send + Sync,
11{
12 /// PhantomData для сообщений
13 pub _msg_phantom: PhantomData<TMsg>,
14
15 /// Функция преобразования сообщений в строки для сохранения в файл
16 pub fn_input: TFnInput,
17}
18
19/// Действие на основе входящего сообщения
20#[derive(Clone)]
21pub enum ConfigAction {
22 /// Не предпринимать никаких действий
23 NoAction,
24
25 /// Добавить строку в файл
26 AppendLine {
27 /// Название файла
28 filename: String,
29
30 /// Строка для добавления в файл
31 line: String,
32 },
33
34 /// Завершить обработку
35 EndProcessing,
36}