[−][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; }