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