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, connect_with};
17pub use recording::{
18    parse_wire_log, read_wire_log, FileWireRecorder, MemoryWireRecorder, RecordingCodec,
19    WireDirection, WireEntry, WireLogError, WireRecorder, WireRecorderHandle,
20};
21pub use replay::{OutboundFrames, ReplayControl, ReplayTransport, ReplayTransportError};
22pub use ws::{MockTransport, MockTransportError, Transport, TungsteniteTransport};
23
24/// Configuration for the transport layer.
25#[derive(Debug, Clone)]
26pub struct TransportConfig {
27    /// Depth of the command send queue.
28    pub send_queue_depth: usize,
29    /// Capacity of the event broadcast channel.
30    pub event_channel_capacity: usize,
31    /// WebSocket connect timeout in seconds.
32    pub connect_timeout_secs: u64,
33    /// Setup handshake timeout in seconds.
34    pub setup_timeout_secs: u64,
35    /// Maximum reconnection attempts before giving up.
36    pub max_reconnect_attempts: u32,
37    /// Base delay for exponential backoff (ms).
38    pub reconnect_base_delay_ms: u32,
39    /// Maximum delay for exponential backoff (ms).
40    pub reconnect_max_delay_ms: u32,
41}
42
43impl Default for TransportConfig {
44    fn default() -> Self {
45        Self {
46            send_queue_depth: 256,
47            event_channel_capacity: 512,
48            connect_timeout_secs: 10,
49            setup_timeout_secs: 15,
50            max_reconnect_attempts: 5,
51            reconnect_base_delay_ms: 1000,
52            reconnect_max_delay_ms: 30_000,
53        }
54    }
55}