1 个不稳定版本
0.1.0 | 2024年3月19日 |
---|
#1531 in 网络编程
135KB
2.5K SLoC
SEP2客户端库
sep2_client
是一个(WIP)Rust库,用于在基于Linux[^1]操作系统的平台上开发符合IEEE 2030.5标准的客户端。
它依赖于,并且应与 sep2_common
crate 以及其IEEE 2030.5 XSD实现一起使用。
该crate使用异步Rust,并且目前仅支持 tokio
运行时。
内容
sep2_client
- IEEE 2030.5客户端库的实现,包括文档和示例
sep2_test_server
- 用于测试的哑IEEE 2030.5服务器
docs
- 论文项目报告和研讨会
进度
核心功能
- 应用支持功能集(TCP、HTTP)
- 安全功能集(TLS + 证书验证、HTTPS)
- IEEE 2030.5基础客户端功能(GET、POST、PUT、DELETE)
- 异步资源轮询
- 通知/订阅客户端服务器机制
- 全局时间偏移(服务器时间同步)
- 事件调度器
- DER
- DRLC
- 消息传递
- 定价
- 按计划时间偏移
- 测试/文档
- 作为系统测试的IEEE 2030.5示例
- 事件调度器测试
- 订阅/通知测试
- DER非聚合客户端示例实现
- 澳大利亚CSIP扩展
未来
示例
一个与服务器同步其时间的客户端
use sep2_client::{client::Client, time::update_time_offset};
use sep2_common::packages::{dcap::DeviceCapability, time::Time};
#[tokio::main]
async fn main() {
// Create a HTTPS client for a specific server
let client = Client::new_https(
"https://127.0.0.1:1337",
"client_cert.pem",
"client_private_key.pem",
"serca.pem",
// No KeepAlive
None,
// Default Poll Tick Rate (10 minutes)
None,
)
.expect("Couldn't create client");
let dcap = client
.get::<DeviceCapability>("/dcap")
.await
.expect("Couldn't retrieve dcap");
let time_link = &dcap.time_link.unwrap();
let time = client.get::<Time>(&time_link.href).await.unwrap();
// Sync client time
update_time_offset(time);
}
更多综合示例可以在 sep2_client/examples
目录中找到。
Cargo功能
可以通过您的crate的Cargo.toml启用或禁用功能
[dependencies.sep2_client]
features = ["der","pubsub"]
功能完整列表
default
: 所有必需的IEEE 2030.5客户端功能集。应用支持、安全和时间。event
: 一个通用事件调度器接口der
: DER功能集事件调度器pricing
: 定价功能集事件调度器messaging
:消息功能集事件调度器drlc
:DRLC功能集事件调度器pubsub
:订阅/通知功能集的轻量级服务器。csip_aus
:CSIP-AUS扩展all
:以上所有
依赖项
由于IEEE 2030.5的安全要求,此库仅支持使用OpenSSL的TLS。要使用此库,您需要一个支持以下内容的本地OpenSSL安装:ECDHE-ECDSA-AES128-CCM8
。
[^1]:该库在macOS上按预期运行。如果您想在macOS上本地测试客户端,请确保openssl
没有引用libressl
,这是默认情况。
许可证
根据您的选择,许可如下:
- Apache License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或https://open-source.org.cn/licenses/MIT)
。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的您有意提交以包含在工作中的任何贡献,将根据上述方式双许可,不附加任何额外条款或条件。
依赖项
~13–26MB
~342K SLoC