gemini_genai_rs/transport/
mod.rs

1//! WebSocket transport layer — connection, full-duplex messaging, flow control.
2
3pub mod auth;
4pub mod builder;
5pub mod codec;
6pub mod connection;
7pub mod flow;
8pub mod ws;
9
10pub use auth::{AuthProvider, GoogleAIAuth, GoogleAITokenAuth, ServiceEndpoint, VertexAIAuth};
11pub use builder::ConnectBuilder;
12pub use codec::{Codec, CodecError, JsonCodec};
13pub use connection::{connect, connect_with};
14pub use flow::{FlowConfig, TokenBucket};
15pub use ws::{MockTransport, MockTransportError, Transport, TungsteniteTransport};
16
17/// Configuration for the transport layer.
18#[derive(Debug, Clone)]
19pub struct TransportConfig {
20    /// Depth of the command send queue.
21    pub send_queue_depth: usize,
22    /// Capacity of the event broadcast channel.
23    pub event_channel_capacity: usize,
24    /// WebSocket connect timeout in seconds.
25    pub connect_timeout_secs: u64,
26    /// Setup handshake timeout in seconds.
27    pub setup_timeout_secs: u64,
28    /// Maximum reconnection attempts before giving up.
29    pub max_reconnect_attempts: u32,
30    /// Base delay for exponential backoff (ms).
31    pub reconnect_base_delay_ms: u32,
32    /// Maximum delay for exponential backoff (ms).
33    pub reconnect_max_delay_ms: u32,
34}
35
36impl Default for TransportConfig {
37    fn default() -> Self {
38        Self {
39            send_queue_depth: 256,
40            event_channel_capacity: 512,
41            connect_timeout_secs: 10,
42            setup_timeout_secs: 15,
43            max_reconnect_attempts: 5,
44            reconnect_base_delay_ms: 1000,
45            reconnect_max_delay_ms: 30_000,
46        }
47    }
48}