gemini_genai_rs/transport/
mod.rs

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