[][src]Attribute Macro servant::query_interface

#[query_interface]

定义query接口,query接口实际上就是一个invoke接口。

在一个应用中,只可以有一个query接口。这个query接口向客户端提供本服务端的基本信息,比如, 有那些提供服务的对象,有哪些接收报告的对象。

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

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

在servant中,缺省实现的query接口是Export,方便客户端查询服务端的信息。

实际应用中,开发者可以定义自己的query接口。

Notice

接口中方法的第一个参数必须是&self或&mut self,因为接口在服务端都是按照对象提供服务的。

Example

#[servant_macro::query_interface]
pub trait Export {
    fn export_servants(&self) -> Vec<Oid>;
    fn export_report_servants(&self) -> Vec<Oid>;
    fn shutdown(&self, passcode: usize);
}