use crate::error::Result;
use crate::io::IgtlClient;
use crate::io::unified_async_client::UnifiedAsyncClient;
use crate::protocol::message::{IgtlMessage, Message};
pub enum SyncIgtlClient {
TcpSync(IgtlClient),
}
impl SyncIgtlClient {
#[inline(always)]
pub fn send<T: Message>(&mut self, msg: &IgtlMessage<T>) -> Result<()> {
match self {
SyncIgtlClient::TcpSync(client) => client.send(msg),
}
}
#[inline(always)]
pub fn receive<T: Message>(&mut self) -> Result<IgtlMessage<T>> {
match self {
SyncIgtlClient::TcpSync(client) => client.receive(),
}
}
#[inline(always)]
pub fn set_verify_crc(&mut self, verify: bool) {
match self {
SyncIgtlClient::TcpSync(client) => client.set_verify_crc(verify),
}
}
}
pub enum AsyncIgtlClient {
Unified(UnifiedAsyncClient),
}
impl AsyncIgtlClient {
#[inline(always)]
pub async fn send<T: Message>(&mut self, msg: &IgtlMessage<T>) -> Result<()> {
match self {
AsyncIgtlClient::Unified(client) => client.send(msg).await,
}
}
#[inline(always)]
pub async fn receive<T: Message>(&mut self) -> Result<IgtlMessage<T>> {
match self {
AsyncIgtlClient::Unified(client) => client.receive().await,
}
}
#[inline(always)]
pub fn set_verify_crc(&mut self, verify: bool) {
match self {
AsyncIgtlClient::Unified(client) => client.set_verify_crc(verify),
}
}
}