[][src]Attribute Macro servant::invoke_interface

#[invoke_interface]

定义带返回值方法的接口,接口中可以有多个带返回值的方法。

在一个应用中,可以定义多个invoke接口,客户端调用这些接口的方法,请求服务端的服务,服务端 通过方法的返回值,响应客户端的请求。

在服务端会生成同名的trait,服务端要实现这个trait,在每个方法中提供服务。只有将每个实现添 加到ServantRegister中,客户端才能请求该实现的服务。

在客户端会生成后缀Proxy的struct,自动实现了该trait的方法,可以通过Terminal的proxy方 法,生成这个proxy,调用接口的方法,向服务端请求服务。

Notice

接口中方法的第一个参数必须是&self或&mut self,因为接口在服务端都是按照对象提供服务的,每个接口 可以有不同的实现类,每个类也可以有不同名字的对象分别提供服务。

Example

#[servant::invoke_interface]
pub trait Dog: Clone {
    fn speak(&self, count: i32) -> String;
    fn owner(&self) -> servant::Oid;
    fn age(&mut self, i: u32) -> u32;
}