17 个版本
0.3.0 | 2021 年 3 月 24 日 |
---|---|
0.2.2 | 2021 年 3 月 12 日 |
0.2.1 | 2021 年 2 月 5 日 |
0.1.14 | 2021 年 1 月 26 日 |
0.1.3 | 2020 年 12 月 22 日 |
在 #ice 中排名第 17
每月下载量 36 次
175KB
4K SLoC
ice-rs
本项目的目标是支持 Rust 在 ZeroC Ice 中。
快速入门
本快速入门指南将涵盖 ZeroC Ice Minimal Sample 的客户端。使用 cargo new minimal-client
创建一个二进制应用程序,并将 ice-rs
添加到您的 [build-dependencies]
和 [dependencies]
中。现在添加一个 build.rs
文件,内容如下
最小客户端
use ice_rs::slice::parser;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rerun-if-changed=build.rs");
let ice_files = vec![
String::from("<path/to/Hello.ice>")
];
let root_module = parser::parse_ice_files(&ice_files, "<path/to/ice/include/dir>")?;
root_module.generate(Path::new("./src/gen"), "")
}
现在将以下内容添加到您的 main.rs
use ice_rs::communicator::Communicator;
mod gen;
use crate::gen::demo::{Hello,HelloPrx};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let mut comm = Communicator::new().await?;
let proxy = comm.string_to_proxy("hello:default -h localhost -p 10000").await?;
let mut hello_prx = HelloPrx::checked_cast(proxy).await?;
hello_prx.say_hello(None).await
}
最小服务器
基于相同的 build.rs
文件,您可以为最小示例添加一个服务器。
use ice_rs::communicator::Communicator;
use std::collections::HashMap;
use async_trait::async_trait;
mod gen;
use crate::gen::demo::{HelloServer, HelloI};
struct HelloImpl {}
#[async_trait]
impl HelloI for HelloImpl {
async fn say_hello(&mut self, _context: Option<HashMap<String, String>>) -> ()
{
println!("Hello World!");
()
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let comm = Communicator::new().await?;
let mut adapter = comm.create_object_adapter_with_endpoint("hello", "tcp -h localhost -p 10000").await?;
let hello_server = HelloServer::new(Box::new(HelloImpl{}));
adapter.add("hello", Box::new(hello_server));
adapter.activate().await?;
Ok(())
}
状态
状态可以通过支持的 ZeroC Ice Demos 的数量来查看。
- Ice/minimal
- Ice/optional
- Ice/context (缺少隐式上下文,见 问题)
- IceGrid/simple
支持的传输方式
- TCP
- SSL
路线图
主要目标是支持所有 ZeroC Ice Demos。
依赖项
~11–20MB
~263K SLoC