use futures::future::BoxFuture;
use crate::error::Result;
use crate::message::Message;
use crate::transport;
pub struct Client<Req: Message, Res: Message> {
name: String,
inner: Box<dyn transport::Client<Req, Res>>,
}
impl<Req: Message, Res: Message> Client<Req, Res> {
pub(crate) fn new(name: String, inner: Box<dyn transport::Client<Req, Res>>) -> Self {
Self { name, inner }
}
pub fn name(&self) -> &str {
&self.name
}
pub fn call(&self, request: &Req) -> Result<Res> {
self.inner.call(request)
}
pub fn call_async<'a>(&'a self, request: &'a Req) -> BoxFuture<'a, Result<Res>> {
self.inner.call_async(request)
}
}