Skip to main content

SocketConfigBuilder

Struct SocketConfigBuilder 

Source
pub struct SocketConfigBuilder<S: State = Empty> { /* private fields */ }
Expand description

Use builder syntax to set the inputs and finish with build_inner().

Implementations§

Source§

impl<S: State> SocketConfigBuilder<S>

Source

pub fn url(self, value: String) -> SocketConfigBuilder<SetUrl<S>>
where S::Url: IsUnset,

Required.

The server address as host:port or a URL.

Source

pub fn mode(self, value: Mode) -> SocketConfigBuilder<SetMode<S>>
where S::Mode: IsUnset,

Required.

The plain or TLS connection mode.

Source

pub fn suffix(self, value: Vec<u8>) -> SocketConfigBuilder<SetSuffix<S>>
where S::Suffix: IsUnset,

Required.

The byte sequence that frames messages in both directions.

Source

pub fn message_handler( self, value: TcpMessageHandler, ) -> SocketConfigBuilder<SetMessageHandler<S>>
where S::MessageHandler: IsUnset,

Optional (Some / Option setters). The function called for each complete incoming message.

Source

pub fn maybe_message_handler( self, value: Option<TcpMessageHandler>, ) -> SocketConfigBuilder<SetMessageHandler<S>>
where S::MessageHandler: IsUnset,

Optional (Some / Option setters). The function called for each complete incoming message.

Source

pub fn heartbeat( self, value: SocketHeartbeat, ) -> SocketConfigBuilder<SetHeartbeat<S>>
where S::Heartbeat: IsUnset,

Optional (Some / Option setters). Optional application keepalive.

When set, the client sends SocketHeartbeat::payload every SocketHeartbeat::interval_secs seconds. A raw socket has no Ping frames, so this type requires a payload; the WebSocket Ping-frame case stays on crate::websocket::WebSocketConfig::heartbeat_payload.

Each timing field carries the coarsest unit that expresses every legitimate value, and quantities compared against each other share a unit: the interval and Self::heartbeat_timeout_secs are bounded below by whole-second cadences, while reconnect delays and jitter have real sub-second values and stay in milliseconds.

Source

pub fn maybe_heartbeat( self, value: Option<SocketHeartbeat>, ) -> SocketConfigBuilder<SetHeartbeat<S>>
where S::Heartbeat: IsUnset,

Optional (Some / Option setters). Optional application keepalive.

When set, the client sends SocketHeartbeat::payload every SocketHeartbeat::interval_secs seconds. A raw socket has no Ping frames, so this type requires a payload; the WebSocket Ping-frame case stays on crate::websocket::WebSocketConfig::heartbeat_payload.

Each timing field carries the coarsest unit that expresses every legitimate value, and quantities compared against each other share a unit: the interval and Self::heartbeat_timeout_secs are bounded below by whole-second cadences, while reconnect delays and jitter have real sub-second values and stay in milliseconds.

Source

pub fn connect_timeout_ms( self, value: u64, ) -> SocketConfigBuilder<SetConnectTimeoutMs<S>>
where S::ConnectTimeoutMs: IsUnset,

Optional (Some / Option setters). The timeout (milliseconds) for establishing a usable connection. Defaults to 10 seconds.

Bounds the initial connection attempt, each reconnect attempt, and how long a send waits for the client to become active again. Keep it above the reconnect backoff so a send does not give up part-way through a normal reconnect.

Source

pub fn maybe_connect_timeout_ms( self, value: Option<u64>, ) -> SocketConfigBuilder<SetConnectTimeoutMs<S>>
where S::ConnectTimeoutMs: IsUnset,

Optional (Some / Option setters). The timeout (milliseconds) for establishing a usable connection. Defaults to 10 seconds.

Bounds the initial connection attempt, each reconnect attempt, and how long a send waits for the client to become active again. Keep it above the reconnect backoff so a send does not give up part-way through a normal reconnect.

Source

pub fn reconnect_delay_initial_ms( self, value: u64, ) -> SocketConfigBuilder<SetReconnectDelayInitialMs<S>>
where S::ReconnectDelayInitialMs: IsUnset,

Optional (Some / Option setters). The initial reconnection delay (milliseconds) for reconnects.

Source

pub fn maybe_reconnect_delay_initial_ms( self, value: Option<u64>, ) -> SocketConfigBuilder<SetReconnectDelayInitialMs<S>>
where S::ReconnectDelayInitialMs: IsUnset,

Optional (Some / Option setters). The initial reconnection delay (milliseconds) for reconnects.

Source

pub fn reconnect_delay_max_ms( self, value: u64, ) -> SocketConfigBuilder<SetReconnectDelayMaxMs<S>>
where S::ReconnectDelayMaxMs: IsUnset,

Optional (Some / Option setters). The maximum reconnect delay (milliseconds) for exponential backoff.

Source

pub fn maybe_reconnect_delay_max_ms( self, value: Option<u64>, ) -> SocketConfigBuilder<SetReconnectDelayMaxMs<S>>
where S::ReconnectDelayMaxMs: IsUnset,

Optional (Some / Option setters). The maximum reconnect delay (milliseconds) for exponential backoff.

Source

pub fn reconnect_backoff_factor( self, value: f64, ) -> SocketConfigBuilder<SetReconnectBackoffFactor<S>>
where S::ReconnectBackoffFactor: IsUnset,

Optional (Some / Option setters). The exponential backoff factor for reconnection delays.

Source

pub fn maybe_reconnect_backoff_factor( self, value: Option<f64>, ) -> SocketConfigBuilder<SetReconnectBackoffFactor<S>>
where S::ReconnectBackoffFactor: IsUnset,

Optional (Some / Option setters). The exponential backoff factor for reconnection delays.

Source

pub fn reconnect_jitter_ms( self, value: u64, ) -> SocketConfigBuilder<SetReconnectJitterMs<S>>
where S::ReconnectJitterMs: IsUnset,

Optional (Some / Option setters). The maximum jitter (milliseconds) added to reconnection delays.

Source

pub fn maybe_reconnect_jitter_ms( self, value: Option<u64>, ) -> SocketConfigBuilder<SetReconnectJitterMs<S>>
where S::ReconnectJitterMs: IsUnset,

Optional (Some / Option setters). The maximum jitter (milliseconds) added to reconnection delays.

Source

pub fn connection_max_retries( self, value: u32, ) -> SocketConfigBuilder<SetConnectionMaxRetries<S>>
where S::ConnectionMaxRetries: IsUnset,

Optional (Some / Option setters). The maximum number of initial connection attempts. Defaults to 5.

Source

pub fn maybe_connection_max_retries( self, value: Option<u32>, ) -> SocketConfigBuilder<SetConnectionMaxRetries<S>>
where S::ConnectionMaxRetries: IsUnset,

Optional (Some / Option setters). The maximum number of initial connection attempts. Defaults to 5.

Source

pub fn reconnect_max_attempts( self, value: u32, ) -> SocketConfigBuilder<SetReconnectMaxAttempts<S>>
where S::ReconnectMaxAttempts: IsUnset,

Optional (Some / Option setters). The maximum number of reconnection attempts before closing the client.

  • None: Unlimited reconnection attempts (default, recommended for production).
  • Some(n): Transitions to CLOSED once n consecutive reconnect attempts have either failed or established connections active for less than 10 seconds.
Source

pub fn maybe_reconnect_max_attempts( self, value: Option<u32>, ) -> SocketConfigBuilder<SetReconnectMaxAttempts<S>>
where S::ReconnectMaxAttempts: IsUnset,

Optional (Some / Option setters). The maximum number of reconnection attempts before closing the client.

  • None: Unlimited reconnection attempts (default, recommended for production).
  • Some(n): Transitions to CLOSED once n consecutive reconnect attempts have either failed or established connections active for less than 10 seconds.
Source

pub fn heartbeat_timeout_secs( self, value: u64, ) -> SocketConfigBuilder<SetHeartbeatTimeoutSecs<S>>
where S::HeartbeatTimeoutSecs: IsUnset,

Optional (Some / Option setters). The dead-peer timeout (seconds) for the read task.

Seconds rather than milliseconds because this is a multiple of the heartbeat interval: it can never sensibly sit below one heartbeat cycle.

When set, the read task stops and triggers reconnection if no bytes at all arrive within this duration. A raw socket has no control frames, so any inbound byte refreshes it, including the venue’s reply to a heartbeat. That makes this the byte-level equivalent of the WebSocket client’s heartbeat_timeout_secs, not of its idle_timeout_ms: there is no transport-level way to tell keepalive traffic from data here.

None derives three heartbeat intervals when Self::heartbeat is set, and disables detection otherwise. Some(0) is rejected. Set an explicit value above the heartbeat interval so a healthy connection cannot trip it.

Source

pub fn maybe_heartbeat_timeout_secs( self, value: Option<u64>, ) -> SocketConfigBuilder<SetHeartbeatTimeoutSecs<S>>
where S::HeartbeatTimeoutSecs: IsUnset,

Optional (Some / Option setters). The dead-peer timeout (seconds) for the read task.

Seconds rather than milliseconds because this is a multiple of the heartbeat interval: it can never sensibly sit below one heartbeat cycle.

When set, the read task stops and triggers reconnection if no bytes at all arrive within this duration. A raw socket has no control frames, so any inbound byte refreshes it, including the venue’s reply to a heartbeat. That makes this the byte-level equivalent of the WebSocket client’s heartbeat_timeout_secs, not of its idle_timeout_ms: there is no transport-level way to tell keepalive traffic from data here.

None derives three heartbeat intervals when Self::heartbeat is set, and disables detection otherwise. Some(0) is rejected. Set an explicit value above the heartbeat interval so a healthy connection cannot trip it.

Source

pub fn writer_capacity( self, value: usize, ) -> SocketConfigBuilder<SetWriterCapacity<S>>
where S::WriterCapacity: IsUnset,

Optional (Some / Option setters). The maximum number of outstanding messages, including queued, in-flight, and replay messages.

Defaults to 1,024. Sends fail immediately when full. Must be positive and no greater than [tokio::sync::Semaphore::MAX_PERMITS]. This bounds message count, not payload bytes.

Source

pub fn maybe_writer_capacity( self, value: Option<usize>, ) -> SocketConfigBuilder<SetWriterCapacity<S>>
where S::WriterCapacity: IsUnset,

Optional (Some / Option setters). The maximum number of outstanding messages, including queued, in-flight, and replay messages.

Defaults to 1,024. Sends fail immediately when full. Must be positive and no greater than [tokio::sync::Semaphore::MAX_PERMITS]. This bounds message count, not payload bytes.

Source

pub fn certs_dir(self, value: String) -> SocketConfigBuilder<SetCertsDir<S>>
where S::CertsDir: IsUnset,

Optional (Some / Option setters). The path to the certificates directory.

Every certificate that parses from any file directly inside the directory, regardless of file name, becomes a trust anchor for the connection alongside the bundled webpki-roots set. No CA or self-signature checks are performed. A certificate chain matched to a private key in the directory is used as the client certificate instead. Write access to the directory is therefore equivalent to control over which servers the connection trusts. Restrict its contents to intended trust anchors. Each anchor loaded from it is logged at INFO with its SHA-256 fingerprint.

Source

pub fn maybe_certs_dir( self, value: Option<String>, ) -> SocketConfigBuilder<SetCertsDir<S>>
where S::CertsDir: IsUnset,

Optional (Some / Option setters). The path to the certificates directory.

Every certificate that parses from any file directly inside the directory, regardless of file name, becomes a trust anchor for the connection alongside the bundled webpki-roots set. No CA or self-signature checks are performed. A certificate chain matched to a private key in the directory is used as the client certificate instead. Write access to the directory is therefore equivalent to control over which servers the connection trusts. Restrict its contents to intended trust anchors. Each anchor loaded from it is logged at INFO with its SHA-256 fingerprint.

Source§

impl<S: IsComplete> SocketConfigBuilder<S>

Source

pub fn build(self) -> NetworkConfigResult<SocketConfig>

Validates and builds the SocketConfig.

§Errors

Returns an error if any field fails validation (see SocketConfig::validate).

Auto Trait Implementations§

§

impl<S = Empty> !RefUnwindSafe for SocketConfigBuilder<S>

§

impl<S = Empty> !UnwindSafe for SocketConfigBuilder<S>

§

impl<S> Freeze for SocketConfigBuilder<S>
where PhantomData<(fn() -> S, fn() -> PhantomData<SocketConfig>)>: Freeze,

§

impl<S> Send for SocketConfigBuilder<S>
where PhantomData<(fn() -> S, fn() -> PhantomData<SocketConfig>)>: Send,

§

impl<S> Sync for SocketConfigBuilder<S>
where PhantomData<(fn() -> S, fn() -> PhantomData<SocketConfig>)>: Sync,

§

impl<S> Unpin for SocketConfigBuilder<S>
where PhantomData<(fn() -> S, fn() -> PhantomData<SocketConfig>)>: Unpin,

§

impl<S> UnsafeUnpin for SocketConfigBuilder<S>

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
§

impl<T> Ungil for T
where T: Send,

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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