17次发布
0.5.1 | 2024年5月19日 |
---|---|
0.5.0 | 2024年5月19日 |
0.4.0 | 2023年2月3日 |
0.3.5 | 2022年10月15日 |
0.1.0 | 2022年4月23日 |
#1009 in 网络编程
216 每月下载量
用于 2 crate
41KB
939 行
Realm IO
Realm的高性能IO集合。
示例
use tokio::net::TcpStream;
use realm_io::{bidi_copy, bidi_zero_copy, bidi_copy_buf};
use realm_io::{Pipe, CopyBuffer};
let mut left = TcpStream::connect("abc").await.unwrap();
let mut right = TcpStream::connect("def").await.unwrap();
// direct copy
bidi_copy(&mut left, &mut right).await;
// zero copy
bidi_zero_copy(&mut left, &mut right).await;
// use custom buffer(vector)
let buf1 = CopyBuffer::new(vec![0; 0x2000]);
let buf2 = CopyBuffer::new(vec![0; 0x2000]);
bidi_copy_buf(&mut left, &mut right, buf1, buf2).await;
// use custom buffer(pipe)
let buf1 = CopyBuffer::new(Pipe::new().unwrap());
let buf2 = CopyBuffer::new(Pipe::new().unwrap());
bidi_copy_buf(&mut left, &mut right, buf1, buf2).await;
关于暴力关闭
默认情况下,bidi_copy_buf
和其他IO函数执行一个优雅关闭。
启用brutal-shutdown
特性后,这些IO函数将在接收到FIN
包时决定执行一个暴力关闭,这将强制关闭两端的两个连接,而不等待回复包。
这在处理实现不佳的客户端或服务器的连接时很有用,这些客户端或服务器可能永远不会关闭其写入端或关闭底层的套接字。
依赖关系
~2–11MB
~94K SLoC