Skip to main content

vtcode_llm/providers/gemini/wire/streaming/
mod.rs

1pub mod errors;
2pub mod processor;
3
4pub use errors::StreamingError;
5pub use processor::{StreamingConfig, StreamingProcessor};
6
7use serde::{Deserialize, Serialize};
8use std::time::{Duration, Instant};
9
10/// Streaming metrics for monitoring and debugging
11#[derive(Debug, Clone, Default)]
12pub struct StreamingMetrics {
13    request_start_time: Option<Instant>,
14    first_chunk_time: Option<Instant>,
15    total_chunks: usize,
16    total_bytes: usize,
17    pub(crate) total_requests: usize,
18    pub(crate) total_response_time: Duration,
19    error_count: usize,
20    retry_count: usize,
21}
22
23/// Streaming response structure
24#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct StreamingResponse {
27    pub(crate) candidates: Vec<StreamingCandidate>,
28    pub(crate) usage_metadata: Option<serde_json::Value>,
29}
30
31/// Streaming candidate structure
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct StreamingCandidate {
35    pub(crate) content: super::models::Content,
36    pub(crate) finish_reason: Option<String>,
37    pub(crate) index: Option<usize>,
38}