Skip to main content

rsiot/components/cmp_tsdb_reader2/
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