AsyncIgtlConnection

Struct AsyncIgtlConnection 

Source
pub struct AsyncIgtlConnection { /* private fields */ }
Expand description

Represents an accepted client connection (async)

Provides methods to send and receive OpenIGTLink messages asynchronously.

Implementations§

Source§

impl AsyncIgtlConnection

Source

pub fn set_verify_crc(&mut self, verify: bool)

Enable or disable CRC verification for received messages

§Arguments
  • verify - true to enable CRC verification (default), false to disable
§Safety

Disabling CRC verification should only be done in trusted environments where data corruption is unlikely (e.g., loopback, local network).

Source

pub fn verify_crc(&self) -> bool

Get current CRC verification setting

Source

pub async fn send<T: Message>(&mut self, msg: &IgtlMessage<T>) -> Result<()>

Send a message to the connected client asynchronously

§Arguments
  • msg - Message to send
§Errors
§Examples
use openigtlink_rust::io::AsyncIgtlServer;
use openigtlink_rust::protocol::types::StatusMessage;
use openigtlink_rust::protocol::message::IgtlMessage;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let server = AsyncIgtlServer::bind("127.0.0.1:18944").await?;
    let mut conn = server.accept().await?;

    let status = StatusMessage::ok("Ready");
    let msg = IgtlMessage::new(status, "Server")?;
    conn.send(&msg).await?;

    Ok(())
}
Source

pub async fn receive<T: Message>(&mut self) -> Result<IgtlMessage<T>>

Receive a message from the connected client asynchronously

§Errors
§Examples
use openigtlink_rust::io::AsyncIgtlServer;
use openigtlink_rust::protocol::types::TransformMessage;
use openigtlink_rust::protocol::message::IgtlMessage;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let server = AsyncIgtlServer::bind("127.0.0.1:18944").await?;
    let mut conn = server.accept().await?;

    let msg: IgtlMessage<TransformMessage> = conn.receive().await?;
    Ok(())
}
Source

pub async fn receive_any(&mut self) -> Result<AnyMessage>

Receive any message type dynamically (async)

This method receives a message without knowing its type in advance, returning it as an AnyMessage enum that can be pattern matched.

§Errors
§Examples
use openigtlink_rust::io::AsyncIgtlServer;
use openigtlink_rust::protocol::AnyMessage;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let server = AsyncIgtlServer::bind("127.0.0.1:18944").await?;
    let mut conn = server.accept().await?;

    let msg = conn.receive_any().await?;
    match msg {
        AnyMessage::Transform(_) => println!("Received transform"),
        AnyMessage::Status(_) => println!("Received status"),
        _ => println!("Received other message"),
    }

    Ok(())
}
Source

pub async fn set_nodelay(&self, nodelay: bool) -> Result<()>

Enable or disable TCP_NODELAY (Nagle’s algorithm)

Source

pub async fn nodelay(&self) -> Result<bool>

Get the current TCP_NODELAY setting

Source

pub fn peer_addr(&self) -> Result<SocketAddr>

Get the remote peer address

Source

pub fn into_split( self, ) -> (AsyncIgtlConnectionReader, AsyncIgtlConnectionWriter)

Split the connection into read and write halves

This allows concurrent reading and writing on separate tasks.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more