#client #space #kerbal #remote-procedure #standalone #mod #krpc

krpc-client

Kerbal Space Program kRPC模块的独立客户端

4个版本

0.5.1-api+0.5.22024年3月23日
0.5.0-0.5.2 2023年3月19日
0.4.2-0.5.2 2023年3月18日
0.4.2-0.5.1 2023年3月17日

#1397 in 网络编程

Download history 23/week @ 2024-04-01

132 每月下载量

GPL-3.0 许可证

97KB
1K SLoC

kRPC客户端

Rust客户端,用于kRPC(Kerbal Space Program的远程过程调用)。

状态

正在进行中。欢迎提交错误报告和贡献。所有过程似乎都正常工作,但需要更多测试。流工作正常,但事件仍在开发中。

krpc-client = { git = "https://github.com/kladd/krpc-client" }

示例

使用标准过程调用向船员打招呼。

let client = Client::new("kRPC TEST", "127.0.0.1", 50000, 50001).unwrap();

let sc = SpaceCenter::new(client.clone());

// Check out our vessel.
let ship = sc.get_active_vessel()?;

// Greet the crew.
match ship.get_crew()?.first() {
    Some(kerbal) => println!(
        "Hello, {}. Welcome to {}",
        kerbal.get_name()?,
        ship.get_name()?
    ),
    None => println!("{} is unkerbaled!", ship.get_name()?),
};

使用流

使用流跟踪时间。

let client = Client::new("kRPC TEST", "127.0.0.1", 50000, 50001)?;

let space_center = SpaceCenter::new(client.clone());

// Set up a stream.
let ut_stream = space_center.get_ut_stream()?;
ut_stream.set_rate(1f32)?;

// Wait for updates, and print the current value.
for _ in 0..10 {
    ut_stream.wait();
    println!("It's {} o'clock", ut_stream.get()?);
}

功能

  • fmt(默认):格式化生成的服务。移除以加快构建速度,生成的文件难以阅读。

黑客攻击

  • krpc-client/client.rs 包含基本的连接、请求和响应处理。
  • krpc-client/lib.rs 声明用于编码和解码RPC类型的特质。
  • krpc_build(由 krpc-client/build.rs 使用),从 service_definitions/*.json 中的定义生成RPC类型和过程,并生成在 krpc-client/lib.rs 中声明的编码和解码特质的实现。

依赖项

~1.8–4MB
~71K SLoC