#[cfg(feature = "alloc")]
use alloc::vec::Vec;
#[cfg(feature = "std")]
use std::vec::Vec;
pub trait UpdateClient {
type Request;
type Update;
type Response;
type Error;
#[allow(clippy::type_complexity)]
fn send_request(&mut self, request: Self::Request) -> Result<(), Self::Error>;
#[allow(clippy::type_complexity)]
fn poll_for_update(&mut self) -> Result<Option<(Self::Request, Self::Update)>, Self::Error>;
#[cfg(any(feature = "alloc", feature = "std"))]
#[allow(clippy::type_complexity)]
fn poll_for_updates(&mut self) -> Vec<Result<(Self::Request, Self::Update), Self::Error>>;
#[allow(clippy::type_complexity)]
fn poll_for_response(&mut self)
-> Result<Option<(Self::Request, Self::Response)>, Self::Error>;
#[cfg(any(feature = "alloc", feature = "std"))]
#[allow(clippy::type_complexity)]
fn poll_for_responses(&mut self) -> Vec<Result<(Self::Request, Self::Response), Self::Error>>;
}
pub trait UpdateServer {
type Request: Clone;
type Update;
type Response;
type Key;
type Error;
#[allow(clippy::type_complexity)]
fn poll_for_request(&mut self) -> Result<Option<(Self::Key, Self::Request)>, Self::Error>;
#[cfg(any(feature = "alloc", feature = "std"))]
#[allow(clippy::type_complexity)]
fn poll_for_requests(&mut self) -> Vec<Result<(Self::Key, Self::Request), Self::Error>>;
fn send_update(
&mut self,
client_key: Self::Key,
request: &Self::Request,
update: Self::Update,
) -> Result<(), Self::Error>;
#[cfg(any(feature = "alloc", feature = "std"))]
#[allow(clippy::type_complexity)]
fn send_updates(
&mut self,
mut updates: Vec<(Self::Key, &Self::Request, Self::Update)>,
) -> Vec<Result<(), Self::Error>> {
updates
.drain(..)
.map(|update| self.send_update(update.0, update.1, update.2))
.collect()
}
fn send_response(
&mut self,
client_key: Self::Key,
request: Self::Request,
response: Self::Response,
) -> Result<(), Self::Error>;
#[cfg(any(feature = "alloc", feature = "std"))]
#[allow(clippy::type_complexity)]
fn send_responses(
&mut self,
mut responses: Vec<(Self::Key, Self::Request, Self::Response)>,
) -> Vec<Result<(), Self::Error>> {
responses
.drain(..)
.map(|response| self.send_response(response.0, response.1, response.2))
.collect()
}
}