14 个重大版本发布
0.15.0 | 2020 年 12 月 29 日 |
---|---|
0.14.0 | 2020 年 9 月 24 日 |
0.13.0 | 2020 年 7 月 2 日 |
0.9.0 | 2020 年 2 月 21 日 |
0.4.0 | 2019 年 3 月 22 日 |
#1506 在 异步
每月 78 次下载
用于 suricata-ipc
13KB
254 代码行
packet-ipc
使用 servo 的 ipc-channel 在进程间共享数据包的库。
在尽可能高效的同时,还允许数据包与 C FFI 一起使用。
对于此库,数据包被定义为任何实现 AsIpcPacket
的结构。
用法
由于客户端将使用服务器名称进行连接,因此必须在创建客户端之前创建服务器。
首先创建一个服务器,并接受一个连接
let server = Server::new().expect("Failed to build server");
let server_name = server.name.clone();
let connection = futures::spawn(server.accept()).expect("No connection formed");
服务器创建后,您可以使用服务器名称创建客户端
let client = Client::new(server_name.clone()).expect("Failed to connect");
此时,您可以向客户端发送数据包
connection.send(Some(packets)).expect("Failed to send");
或告诉客户端您已完成发送数据包
connection.send(None).expect("Failed to send");
并关闭连接
connection.close();
客户端立即可用于使用,并可以使用以下方式接收数据包
let opt_packets = client.receive_packets(size).expect("Failed to receive packets");
if Some(packets) = opt_packets {
process_packets(packets);
} //else server is closed
向客户端流式传输数据包
一旦建立连接,就可以使用数据包流进行操作
let stream_result = packets_stream.transfer_ipc(connection).collect().wait();
依赖项
~5–15MB
~216K SLoC