2个版本
0.0.6 | 2024年2月21日 |
---|---|
0.0.5 | 2024年2月21日 |
#715 在 网络编程
125KB
3K SLoC
ovsdb-build
将OVSDB模式编译成Rust模型和代理,以便在ovsdb
中进行类型化数据库交互。
概述
为了以类型安全的方式与OVSDB实例交互,我们需要创建强类型结构体,这些结构体映射到OVSDB中的表。 ovsdb-build
接受一个OVSDB模式,并为每个表生成2个结构体
- 一个客户端应用程序使用的本地结构体,
- 一个代理结构体,由
serde
使用以处理消息的编码/解码
转换主要通过现有Rust类型周围的新类型包装器来处理,因此应该非常高效。
然而,在构建之前,您需要一个模式。例如,假设您想与Open vSwitch数据库交互。您需要做的第一件事是获取模式副本(通常以.ovsschema
扩展名存储)。模式文件可以在仓库中找到,或者通过直接连接到OVSDB实例来获取。如果您正在运行Open vSwitch,那么OVSDB已经在您的计算机上运行(通常监听在本地套接字上)。例如,在我的本地计算机上,我可以使用以下命令连接并下载模式副本
# ovsdb-client get-schema /var/run/openvswitch/db.sock > /tmp/vswitch.ovsschema
请注意,连接到OVSDB套接字需要root权限。在继续之前,查看模式文件本身可能是值得的,因为OVSDB模式引入了一些在其他数据库系统中不存在的概念。
安装
只需将ovsdb-build
作为依赖项添加,无论是通过cargo
$ cargo add --build ovsdb-build
还是直接到Cargo.toml
[build-dependencies]
ovsdb-build = <ovsdb-version>
示例
假设之前下载的模式存储在/tmp/vswitch.ovsschema
中,在build.rs
fn main() -> Result<(), Box<dyn std::error::Error>> {
ovsdb_build::configure().compile("/tmp/vswitch.ovsschema", "vswitch")?;
Ok(())
}
许可证
此项目根据MIT许可证授权。
作者
依赖项
~5–15MB
~173K SLoC