4 releases (2 breaking)
0.3.0 | Feb 3, 2024 |
---|---|
0.2.0 | May 10, 2020 |
0.1.1 | May 9, 2020 |
0.1.0 | May 9, 2020 |
#2 in #race
1MB
688 lines
RMonitor for Rust
A simple, Tokio-compatible protocol decoder for RMonitor, a line based timing protocol supported by different vendors of sport timing software.
The decoder supports both:
- The original RMonitor Timing Protocol
- The IMSA Enhanced protocol, which adds two extended record types.
Example
You'll need rmonitor
, tokio
and tokio-util
in your dependencies:
rmonitor = "0.2"
tokio-util = { version = "0.3", features = ["codec"] }
tokio = { version = "0.2", features = ["full"] }
Then create your main.rs
:
use rmonitor::RMonitorDecoder;
use std::error::Error;
use tokio::net::TcpStream;
use tokio::stream::StreamExt;
use tokio_util::codec::FramedRead;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// Connect to your target RMonitor server
let stream = TcpStream::connect("127.0.0.1:4000").await?;
// Construct a decode with a maximum line length of 2048
let mut reader = FramedRead::new(stream, RMonitorDecoder::new_with_max_length(2048));
while let Ok(Some(Ok(event))) = reader.next().await {
println!("{:?}", event);
}
Ok(())
}
A synchronous example is also available to show use of the decoder without pulling in a Tokio runtime.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~4–12MB
~129K SLoC