vtcode_llm/providers/gemini/wire/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 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#[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#[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}