3个不稳定版本
使用旧的Rust 2015
0.2.0 | 2017年9月25日 |
---|---|
0.1.1 | 2017年9月22日 |
0.1.0 | 2017年9月22日 |
在#candidate中排名第6
23KB
576 行
candidateparser
这是一个用于ICE候选SDP的解析器,用于通信系统(如WebRTC)中的连接建立和NAT穿越。提供了C和Android(通过JNI)的绑定。也可以构建iOS的通用库。
候选SDP示例
candidate:842163049 1 udp 1686052607 1.2.3.4 46154 typ srflx raddr 10.0.0.17 rport 46154 generation 0 ufrag EEtu network-id 3 network-cost 10
它将数据解析为包含所有组件的结构体。上面的示例将生成以下对象
IceCandidate {
foundation: "842163049",
component_id: 1,
transport: Udp,
priority: 1686052607,
connection_address: V4(1.2.3.4),
port: 46154,
candidate_type: Srflx,
rel_addr: Some(V4(10.0.0.17)),
rel_port: Some(46154),
extensions: Some({
[110, 101, 116, 119, 111, 114, 107, 45, 99, 111, 115, 116]: [49, 48],
[103, 101, 110, 101, 114, 97, 116, 105, 111, 110]: [48],
[117, 102, 114, 97, 103]: [69, 69, 116, 117],
[110, 101, 116, 119, 111, 114, 107, 45, 105, 100]: [51]
})
}
有关更多信息,请参阅RFC5245(交互式连接建立(ICE))。
模块文档:https://docs.rs/candidateparser/
注意:由于构建系统问题,需要Rust 1.21+。
FFI(C/C++17)
此库包含C和C++17绑定,因此您可以从支持C调用约定的任何语言中使用它。C和C++17的示例程序可以在candidateparser-ffi/examples/
目录中找到。
JNI绑定(Java/Android)
此库还包含JNI绑定,使用jni-rs编写。在candidateparser-android
目录中提供了一个具有简单测试的Android库。
确保在构建Android库之前构建candidateparser-jni
模块。
为Android构建candidateparser-jni
要求
- Android NDK
- Rustup
- Make
添加rustup目标
$ rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android
构建独立的工具链
$ ./create-ndk-standalone.sh
将工具链配置添加到您的~/.cargo/config
$ cat cargo-config.toml >> ~/.cargo/config
构建Android库
$ make android
为Android构建candidateparser-android
库
使用gradle构建库
$ ./gradlew build
您将在app/build/outputs/aar/
目录中找到AAR文件。
代码风格检查
要在夜间编译器上运行clippy代码风格检查,请使用--features clippy
编译库
$ cargo build --features clippy
注意:从工作区根目录运行此命令将不起作用,您必须使用cd
进入子模块!
通用iOS库
如果您想构建一个通用的iOS库,请安装cargo-lipo。然后,删除根目录下的Cargo.toml
文件(目前cargo-lipo无法处理工作区)。
$ rm Cargo.toml
最后,构建库
$ make ios
请注意,目前这仅在macOS上有效。
许可证
根据以下任一许可证授权:
- Apache License,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)由您选择。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,将按上述方式双授权,不附加任何额外条款或条件。
lib.rs
:
遵循RFC5245的ICE候选解析器。
此库的主要入口点是parse
函数。有关更多信息,请参阅该函数的文档。
依赖项
~1.1–2MB
~46K SLoC