use crate::error::Result;
use crate::io::sync_client::SyncTcpClient;
use crate::io::unified_async_client::UnifiedAsyncClient;
use crate::protocol::any_message::AnyMessage;
use crate::protocol::message::{IgtlMessage, Message};
pub enum SyncIgtlClient {
TcpSync(SyncTcpClient),
}
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),
}
}
#[inline(always)]
pub fn set_read_timeout(&self, timeout: Option<std::time::Duration>) -> Result<()> {
match self {
SyncIgtlClient::TcpSync(client) => client.set_read_timeout(timeout),
}
}
#[inline(always)]
pub fn receive_any(&mut self) -> Result<AnyMessage> {
match self {
SyncIgtlClient::TcpSync(client) => client.receive_any(),
}
}
}
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),
}
}
#[inline(always)]
pub fn reconnect_count(&self) -> usize {
match self {
AsyncIgtlClient::Unified(client) => client.reconnect_count(),
}
}
#[inline(always)]
pub async fn receive_any(&mut self) -> Result<AnyMessage> {
match self {
AsyncIgtlClient::Unified(client) => client.receive_any().await,
}
}
}