pub struct ClientBuilder<Protocol = Unspecified, Mode = Unspecified> { /* private fields */ }
Expand description
Type-state builder for OpenIGTLink clients
Uses compile-time type checking to ensure only valid client configurations can be constructed.
§Type Parameters
Protocol
- Protocol state (Unspecified, TcpConfigured, UdpConfigured)Mode
- Mode state (Unspecified, SyncMode, AsyncMode)
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
let client = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.sync()
.build()?;
Implementations§
Source§impl ClientBuilder<Unspecified, Unspecified>
impl ClientBuilder<Unspecified, Unspecified>
Sourcepub fn tcp(
self,
addr: impl Into<String>,
) -> ClientBuilder<TcpConfigured, Unspecified>
pub fn tcp( self, addr: impl Into<String>, ) -> ClientBuilder<TcpConfigured, Unspecified>
Sourcepub fn udp(
self,
addr: impl Into<String>,
) -> ClientBuilder<UdpConfigured, SyncMode>
pub fn udp( self, addr: impl Into<String>, ) -> ClientBuilder<UdpConfigured, SyncMode>
Source§impl ClientBuilder<TcpConfigured, Unspecified>
impl ClientBuilder<TcpConfigured, Unspecified>
Sourcepub fn sync(self) -> ClientBuilder<TcpConfigured, SyncMode>
pub fn sync(self) -> ClientBuilder<TcpConfigured, SyncMode>
Select synchronous (blocking) mode
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
let builder = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.sync();
Sourcepub fn async_mode(self) -> ClientBuilder<TcpConfigured, AsyncMode>
pub fn async_mode(self) -> ClientBuilder<TcpConfigured, AsyncMode>
Select asynchronous (non-blocking) mode
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
let builder = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.async_mode();
Source§impl ClientBuilder<TcpConfigured, AsyncMode>
impl ClientBuilder<TcpConfigured, AsyncMode>
Sourcepub fn with_tls(self, config: Arc<ClientConfig>) -> Self
pub fn with_tls(self, config: Arc<ClientConfig>) -> Self
Configure TLS encryption
§Arguments
config
- TLS client configuration
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
use std::sync::Arc;
let tls_config = rustls::ClientConfig::builder()
.with_root_certificates(rustls::RootCertStore::empty())
.with_no_client_auth();
let client = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.async_mode()
.with_tls(Arc::new(tls_config))
.build()
.await?;
Sourcepub fn with_reconnect(self, config: ReconnectConfig) -> Self
pub fn with_reconnect(self, config: ReconnectConfig) -> Self
Configure automatic reconnection
§Arguments
config
- Reconnection strategy configuration
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
use openigtlink_rust::io::reconnect::ReconnectConfig;
let client = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.async_mode()
.with_reconnect(ReconnectConfig::default())
.build()
.await?;
Sourcepub async fn build(self) -> Result<AsyncIgtlClient>
pub async fn build(self) -> Result<AsyncIgtlClient>
Build an asynchronous TCP client
Creates the appropriate client variant based on configured options:
- No options: Plain async TCP client
- TLS only: TLS-encrypted async client
- Reconnect only: Auto-reconnecting async client
- TLS + Reconnect: TLS-encrypted auto-reconnecting client
§Errors
Returns error if connection fails
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
// Plain async client
let client = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.async_mode()
.build()
.await?;
Source§impl<Protocol, Mode> ClientBuilder<Protocol, Mode>
impl<Protocol, Mode> ClientBuilder<Protocol, Mode>
Sourcepub fn verify_crc(self, verify: bool) -> Self
pub fn verify_crc(self, verify: bool) -> Self
Enable or disable CRC verification for received messages
Default: true (CRC verification enabled)
§Arguments
verify
- true to enable CRC verification, false to disable
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
let builder = ClientBuilder::new()
.tcp("127.0.0.1:18944")
.sync()
.verify_crc(false);
Source§impl ClientBuilder<UdpConfigured, SyncMode>
impl ClientBuilder<UdpConfigured, SyncMode>
Sourcepub fn build(self) -> Result<UdpClient>
pub fn build(self) -> Result<UdpClient>
Build a UDP client
UDP clients use a connectionless protocol and require specifying
the target address for each send operation using send_to()
.
§Errors
Returns error if binding to local address fails
§Examples
use openigtlink_rust::io::builder::ClientBuilder;
use openigtlink_rust::protocol::types::TransformMessage;
use openigtlink_rust::protocol::message::IgtlMessage;
let client = ClientBuilder::new()
.udp("0.0.0.0:0")
.build()?;
let transform = TransformMessage::identity();
let msg = IgtlMessage::new(transform, "Device")?;
client.send_to(&msg, "127.0.0.1:18944")?;
Trait Implementations§
Source§impl Default for ClientBuilder<Unspecified, Unspecified>
impl Default for ClientBuilder<Unspecified, Unspecified>
Auto Trait Implementations§
impl<Protocol, Mode> Freeze for ClientBuilder<Protocol, Mode>where
Protocol: Freeze,
impl<Protocol = Unspecified, Mode = Unspecified> !RefUnwindSafe for ClientBuilder<Protocol, Mode>
impl<Protocol, Mode> Send for ClientBuilder<Protocol, Mode>
impl<Protocol, Mode> Sync for ClientBuilder<Protocol, Mode>
impl<Protocol, Mode> Unpin for ClientBuilder<Protocol, Mode>
impl<Protocol = Unspecified, Mode = Unspecified> !UnwindSafe for ClientBuilder<Protocol, Mode>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more