librist-rust

crates.io version Documentation

Rust wapper for librist, allowing you to use the RIST protocol within Rust applications.

Feature support

This wrapper is in very early stages and currently does not support a number of librist features:

fn main() { let url = std::env::args().skip(1).next() .expect("Please supply one URL argument"); let peerconfig = PeerConfig::parseaddress(&url) .expect(&format!("Unable to parse {:?}",url)); let loggingsettings = LoggingSettings::file(LogLevel::Info, stderr()) .expect("LoggingSettings::file() failed"); let mut ctx = ReceiverContext::create(Profile::Main, loggingsettings) .expect("Context::receiver_create failed");

ctx.peer_create(peer_config)
    .expect("peer_create() failed");

// Have to call these or the connection with the librist 'ristsender' tool will not be
// established
ctx.auth_handler_set().expect("auth_handler_set() failed");
ctx.oob_callback_set().expect("oob_callback_set() failed");

ctx.start();
loop {
    match ctx.data_read(std::time::Duration::from_secs(1)) {
        Ok(DataReadResponse::NoData) => {
            println!("No data received within timeout window")
        },
        Ok(DataReadResponse::Data { block, queue_size }) => {
            println!("Got a data block; queue now at {} items", queue_size);
            hexdump::hexdump(block.payload())
        },
        Err(e) => {
            println!("data_read() failed {:?}", e);
            return;
        },
    }
}

} ```

The above example is in this project, so from a checked-out copy you can run the following to dump payloads of RIST packets sent to port 12344 on localhost,

shell script cargo run --release --example receiver rist://@127.0.0.1:12344