Crates.io | rmonitor |
lib.rs | rmonitor |
version | 0.3.0 |
source | src |
created_at | 2020-05-09 12:45:05.310322 |
updated_at | 2024-02-03 11:03:48.365204 |
description | A simple, Tokio-compatible protocol decoder for RMonitor, a line based timing protocol supported by different vendors of sport timing software. |
homepage | https://github.com/bradfier/rmonitor |
repository | |
max_upload_size | |
id | 239244 |
size | 3,848,152 |
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:
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.
Licensed under either of
at your option.