74 个版本
0.0.82 | 2024 年 7 月 8 日 |
---|---|
0.0.81 | 2024 年 4 月 17 日 |
0.0.78 | 2024 年 3 月 25 日 |
0.0.64 | 2024 年 2 月 29 日 |
0.0.16 | 2023 年 11 月 30 日 |
#189 in GUI
每月 320 次下载
7.5MB
12K SLoC
包含 (压缩文件,3MB) .xdp-..com.vivaldi.Vivaldi.Fs84b5-dWf6a8
构建数据收集、处理和可视化系统的组件
概述
描述
组件 是异步函数。所有函数都有三个参数
async fn component<TMessage, TConfig>(
input: Option<tokio::sync::mpsc::Receiver<TMessage>>,
output: Option<tokio::sync::mpsc::Sender<TMessage>>,
config: TConfig,
) -> ()
where
TMessage: IMessage
{}
组件之间的消息通过 tokio
库的 "多个生产者到单个消费者" 通道传递。
输入或输出流可以不指定,因此通道被包裹在 Option 中。
每个组件的 TConfig
类型的配置结构是唯一的。
组件不返回任何内容(更准确地说,返回类型为 ()
)。如果组件中出现错误,必须在函数内部实现重启逻辑。TODO - 重新考虑,可能值得在关键错误时返回 Result。
消息 是一个枚举类型,例如
use rsiot_messages_core::eav::EavModel;
use rsiot_messages_core::IMessage;
use serde::{Deserialize, Serialize};
[derive(Clone, Debug, Deserialize, Serialize)]
enum Message {
/// Текущее значение температуры
Temperature(f64),
/// Задание уставки
ChangeSetpoint(f64),
}
impl IMessage for Message {
fn into_eav(self) -> Vec<EavModel> {
vec![]
}}
特质 IMessage
实现了基本方法 - 请参阅 rsiot-messages-core 库的文档
为了简化,可以在 组件链 中创建和组合组件。
- 可以基于输入消息生成消息
- 可以定期生成消息
特征标志 feature
依赖项
~6–54MB
~1M SLoC