vtcode_core/gemini/streaming/
mod.rs1pub 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#[derive(Debug, Clone, Default)]
12pub struct StreamingMetrics {
13 pub request_start_time: Option<Instant>,
14 pub first_chunk_time: Option<Instant>,
15 pub total_chunks: usize,
16 pub total_bytes: usize,
17 pub total_requests: usize,
18 pub total_response_time: Duration,
19 pub error_count: usize,
20 pub retry_count: usize,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct StreamingResponse {
27 pub candidates: Vec<StreamingCandidate>,
28 pub usage_metadata: Option<serde_json::Value>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct StreamingCandidate {
35 pub content: crate::gemini::models::Content,
36 pub finish_reason: Option<String>,
37 pub index: Option<usize>,
38}