Skip to main content

WebSocketConfig

Struct WebSocketConfig 

Source
pub struct WebSocketConfig {
Show 13 fields pub ws_url: Url, pub heartbeat_interval: Duration, pub max_reconnect_attempts: u32, pub reconnect_delay: Duration, pub connection_timeout: Duration, pub enable_logging: bool, pub log_level: String, pub test_mode: bool, pub client_id: Option<String>, pub client_secret: Option<String>, pub request_timeout: Duration, pub notification_channel_capacity: usize, pub dispatcher_command_capacity: usize,
}
Expand description

WebSocket client configuration

Fields§

§ws_url: Url

WebSocket URL

§heartbeat_interval: Duration

Heartbeat interval

§max_reconnect_attempts: u32

Maximum reconnection attempts

§reconnect_delay: Duration

Reconnection delay

§connection_timeout: Duration

Connection timeout

§enable_logging: bool

Enable logging

§log_level: String

Log level

§test_mode: bool

Test mode

§client_id: Option<String>

Client ID for authentication

§client_secret: Option<String>

Client secret for authentication

§request_timeout: Duration

Per-request timeout for crate::client::DeribitWebSocketClient::send_request.

Every call that awaits a matching JSON-RPC response is bounded by this duration. If the response does not arrive in time, the call returns crate::error::WebSocketError::Timeout.

§notification_channel_capacity: usize

Notification channel capacity (frames buffered for the consumer).

Depth of the bounded tokio::sync::mpsc that carries server-pushed notifications (and any unmatched frames) from the dispatcher task to crate::client::DeribitWebSocketClient::receive_message / start_message_processing_loop.

§Backpressure — Strategy A (await-send)

When the channel is full the dispatcher task blocks on send().await; it therefore stops polling the WebSocket stream, the TCP recv buffer fills, and the Deribit server applies flow control. No frames are dropped due to backpressure; if the notification receiver has been closed (for example during shutdown or disconnect), the affected frames are discarded. Every full-channel event emits a tracing::warn! with the channel capacity so slow consumers are visible in logs.

Sizing: the default of 1024 is sufficient for normal liquid instruments. Raise it when the consumer performs heavy synchronous work between next_notification calls; lower it to tighten end-to-end memory bounds at the cost of more frequent backpressure warnings.

§dispatcher_command_capacity: usize

Dispatcher command channel capacity (in-flight outbound commands).

Depth of the bounded tokio::sync::mpsc that carries outbound commands (request sends, cancel-request on timeout, shutdown) from callers to the dispatcher task.

§Backpressure — Strategy A (await-send)

When the channel is full, callers of crate::client::DeribitWebSocketClient::send_request / crate::client::DeribitWebSocketClient::disconnect block on send().await until the dispatcher drains a slot. Blocking here means the application is issuing requests faster than the dispatcher can write them to the socket; the request_timeout bound on send_request still applies, so the caller sees a crate::error::WebSocketError::Timeout if the deadline elapses while waiting on the command channel.

Implementations§

Source§

impl WebSocketConfig

Source

pub fn try_new() -> Result<Self, ParseError>

Construct a configuration from environment variables, propagating parse errors for any user-supplied URL.

Loads .env once via Self::load_env, reads DERIBIT_WS_URL (falling back to constants::PRODUCTION_WS_URL when unset), and parses it. All other fields follow the same env-or-default strategy as Default but never fail.

Prefer this over Default::default when the caller needs to surface an invalid DERIBIT_WS_URL as an error instead of silently falling back to the production URL.

§Errors

Returns url::ParseError when DERIBIT_WS_URL is set to a value that cannot be parsed as a URL.

Source

pub fn with_url(url: &str) -> Result<Self, ParseError>

Create a new configuration with a custom URL.

Non-URL fields are populated from environment variables using the same rules as Default; only the URL is overridden. .env is loaded once via Self::load_env before any env var is read.

§Errors

Returns url::ParseError when url cannot be parsed.

Source

pub fn with_heartbeat_interval(self, interval: Duration) -> Self

Set heartbeat interval

Source

pub fn with_max_reconnect_attempts(self, attempts: u32) -> Self

Set maximum reconnection attempts

Source

pub fn with_reconnect_delay(self, delay: Duration) -> Self

Set reconnection delay

Source

pub fn with_connection_timeout(self, timeout: Duration) -> Self

Set connection timeout

Source

pub fn with_credentials(self, client_id: String, client_secret: String) -> Self

Set client credentials

Source

pub fn with_client_id(self, client_id: String) -> Self

Set client ID

Source

pub fn with_client_secret(self, client_secret: String) -> Self

Set client secret

Source

pub fn with_logging(self, enable: bool) -> Self

Enable or disable logging

Source

pub fn with_log_level(self, level: String) -> Self

Set log level

Source

pub fn with_test_mode(self, test_mode: bool) -> Self

Set test mode

Source

pub fn has_credentials(&self) -> bool

Check if credentials are available

Source

pub fn get_credentials(&self) -> Option<(&str, &str)>

Get client credentials as tuple

Source

pub fn with_request_timeout(self, timeout: Duration) -> Self

Set the per-request timeout awaiting a matching JSON-RPC response.

Source

pub fn with_notification_channel_capacity(self, capacity: usize) -> Self

Set the notification channel capacity.

This bounds the number of server-pushed frames buffered between the dispatcher task and the consumer.

Source

pub fn with_dispatcher_command_capacity(self, capacity: usize) -> Self

Set the dispatcher command channel capacity.

Caps the number of outbound commands queued waiting for the dispatcher task to process them.

Trait Implementations§

Source§

impl Clone for WebSocketConfig

Source§

fn clone(&self) -> WebSocketConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WebSocketConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WebSocketConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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