4 releases
0.5.1-api+0.5.2 | Mar 23, 2024 |
---|---|
0.5.0-0.5.2 | Mar 19, 2023 |
0.4.2-0.5.2 | Mar 18, 2023 |
0.4.2-0.5.1 | Mar 17, 2023 |
#126 in Procedural macros
97KB
1K
SLoC
kRPC Client
Rust client for kRPC (Remote Procedure Calls for Kerbal Space Program).
Status
Work in progress. Bug-reports and contributions welcome. All procedures seem to work, but more testing is needed. Streams work, but Events are still on the way.
krpc-client = { git = "https://github.com/kladd/krpc-client" }
Examples
Greet the crew with standard procedure calls.
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()?),
};
Using Streams
Keep track of time with streams.
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()?);
}
Features
fmt
(default): Format generated services. Remove for a quicker build producing an unreadable file.
Hacking
krpc-client/client.rs
contains basic connection, request, and response handling.krpc-client/lib.rs
declares traits for encoding and decoding RPC types.krpc_build
(used bykrpc-client/build.rs
), generates RPC types and procedures from definitions inservice_definitions/*.json
, and generates implementations of the encoding and decoding traits declared inkrpc-client/lib.rs
.
Dependencies
~1.8–4MB
~71K SLoC