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.
You'll need rmonitor
, tokio
and tokio-util
in your dependencies:
toml
rmonitor = "0.2"
tokio-util = { version = "0.3", features = ["codec"] }
tokio = { version = "0.2", features = ["full"] }
Then create your main.rs
:
```rust use rmonitor::RMonitorDecoder; use std::error::Error; use tokio::net::TcpStream; use tokio::stream::StreamExt; use tokio_util::codec::FramedRead;
async fn main() -> Result<(), Box
// 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.
Licensed under either of
at your option.