1pub mod client;
2pub mod discovery;
3pub mod selector;
4pub mod xclient;
5
6pub use client::*;
7pub use discovery::*;
8pub use selector::*;
9pub use xclient::*;
10
11use async_trait::async_trait;
12
13use rpcx_protocol::{CallFuture, Metadata, Result, RpcxParam};
14
15#[async_trait]
16pub trait RpcxClient {
17 fn call<T>(
18 &mut self,
19 service_method: &str,
20 is_oneway: bool,
21 metadata: &Metadata,
22 args: &dyn RpcxParam,
23 ) -> Option<Result<T>>
24 where
25 T: RpcxParam + Default;
26
27 fn send<T>(
28 &mut self,
29 service_method: &str,
30 is_oneway: bool,
31 metadata: &Metadata,
32 args: &dyn RpcxParam,
33 ) -> CallFuture
34 where
35 T: RpcxParam + Default + Sync + Send + 'static;
36}