9个版本 (5个重大变更)

0.6.3 2022年3月7日
0.6.2 2022年3月7日
0.6.1 2021年4月28日
0.5.0 2021年4月1日
0.1.0 2020年6月25日

#185 in 视频

每月28次下载

BSD-2-Clause

5MB
91K SLoC

C 90K SLoC // 0.2% comments Rust 423 SLoC // 0.0% comments Shell 17 SLoC // 0.3% comments

librist-rust

crates.io version Documentation

librist的Rust包装器,允许您在Rust应用程序中使用RIST协议。

功能支持

此包装器处于非常初级的阶段,目前不支持librist的一些功能

  • 发送 - 不支持
  • 接收 - 基本支持
  • 自定义身份验证钩子 - 不支持
  • 带外数据 - 不支持
  • 支持librist日志配置
  • 统计报告 - 不支持
  • 数据回调 - 不支持
  • NAK控制 - 不支持

示例

接收并十六进制转储RIST数据包,

use librist_rust::{LoggingSettings, LogLevel, ReceiverContext, Profile, PeerConfig, RistError, DataReadResponse};
use std::io::stderr;

fn main() {
   let url = std::env::args().skip(1).next()
       .expect("Please supply one URL argument");
   let peer_config = PeerConfig::parse_address(&url)
       .expect(&format!("Unable to parse {:?}",url));
   let logging_settings = LoggingSettings::file(LogLevel::Info, stderr())
       .expect("LoggingSettings::file() failed");
   let mut ctx = ReceiverContext::create(Profile::Main, logging_settings)
       .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;
           },
       }
   }
}

上述示例位于此项目中,因此从已检出副本中,您可以通过以下命令转储发送到本地主机12344端口的RIST数据包的有效负载,

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

依赖项