rsiot/components/cmp_tsdb_reader/config.rs
1use std::time::Duration;
2
3use time::OffsetDateTime;
4
5use crate::message::{MsgDataBound, ValueTime};
6
7// ANCHOR: Config
8/// Конфигурация cmp_timescaledb_reader
9#[derive(Clone)]
10pub struct Config<TMsg>
11where
12 TMsg: MsgDataBound,
13{
14 /// Строка подключения к БД
15 ///
16 /// Примеры:
17 ///
18 /// - ```String::from("postgres://user:password@localhost:5432/db_name")```
19 pub connection_string: String,
20
21 /// Максимальное количество подключений к БД
22 pub max_connections: u32,
23
24 /// Начало диапазона времени
25 pub time_begin: OffsetDateTime,
26
27 /// Конец диапазона времени
28 pub time_end: OffsetDateTime,
29
30 /// Настройки параметров
31 pub items: Vec<ConfigItem<TMsg>>,
32
33 /// Задержка между отправкой сообщений в шину. Слишком много сообщений может привести к
34 /// переполнению шины
35 pub delay_between_msgs: Duration,
36
37 /// Сообщение об окончании работы компонента, когда все данные были успешно прочитаны
38 pub fn_shutdown: fn() -> TMsg,
39}
40// ANCHOR: Config
41
42// ANCHOR: ConfigItem
43/// Конфигурация отдельного параметра
44#[derive(Clone)]
45pub struct ConfigItem<TMsg>
46where
47 TMsg: MsgDataBound,
48{
49 /// Сущность
50 pub entity: &'static str,
51
52 /// Атрибут
53 pub attr: &'static str,
54
55 /// Функция создания исходящих сообщений
56 pub fn_output: fn(ValueTime) -> TMsg,
57}
58// ANCHOR: ConfigItem