7 个版本 ()
3.1.8-2-2fcda | 2023年11月29日 |
---|---|
0.2.4 | 2023年1月27日 |
0.2.3 | 2022年9月26日 |
0.2.2 | 2021年9月3日 |
0.1.0 | 2021年1月28日 |
#1 in #高可用性
每月 21 次下载
315KB
9K SLoC
rust-corosync
corosync 的 Rust 绑定
Rust 绑定 cfg、cmap、cpg、quorum、votequorum 是此源树的一部分,但主要包含在这里是为了保持所有 corosync API 在一个地方,并确保所有内容都在我们的 CI 系统中得到更新和适当的测试。
获取 corosync 的 Rust 软件包的正确位置仍然是 crates.io,就像其他软件包一样。这些将在我们发布新的 corosync 版本时更新。
https://crates.io/crates/rust-corosync
当然,如果您想尝试 API 中可能尚未发布的任何新功能,则可以尝试这些源代码,但请通过电子邮件或 IRC 与我们保持联系。
libera IRC 上的 #clusterlabs 或 #kronosnet [email protected]
lib.rs
:
此软件包提供了从 Rust 访问 corosync 库 cpg、cfg、cmap、quorum 及 votequorum 的权限。它们在真正的 API 调用周围是一个相当薄的一层,但带有 Rust 数据类型和迭代器。
Corosync 是高可用性集群的低级集群服务提供程序,有关 corosync 的更多信息,请参阅 https://corosync.github.io/corosync/
此处不会提供有关 corosync 本身的更多信息,预期如果您觉得需要访问 Corosync API 调用,您就知道它们的作用 :)
示例
extern crate rust_corosync as corosync;
use corosync::cmap;
fn main()
{
// Open connection to corosync libcmap
let handle =
match cmap::initialize(cmap::Map::Icmap) {
Ok(h) => {
println!("cmap initialized.");
h
}
Err(e) => {
println!("Error in CMAP (Icmap) init: {}", e);
return;
}
};
// Set a numeric value (this is a generic fn)
match cmap::set_number(handle, "test.test_uint32", 456)
{
Ok(_) => {}
Err(e) => {
println!("Error in CMAP set_u32: {}", e);
return;
}
};
// Get a value - this will be a Data struct
match cmap::get(handle, "test.test_uint32")
{
Ok(v) => {
println!("GOT value {}", v);
}
Err(e) => {
println!("Error in CMAP get: {}", e);
return;
}
};
// Use an iterator
match cmap::CmapIterStart::new(handle, "totem.") {
Ok(cmap_iter) => {
for i in cmap_iter {
println!("ITER: {:?}", i);
}
println!("");
}
Err(e) => {
println!("Error in CMAP iter start: {}", e);
}
}
// Close this connection
match cmap::finalize(handle)
{
Ok(_) => {}
Err(e) => {
println!("Error in CMAP get: {}", e);
return;
}
};
}
依赖项
~1.5MB
~37K SLoC