turbomcp_protocol/context/
ping.rs

1//! Ping and health monitoring context types.
2//!
3//! This module contains types for handling ping requests, health checks,
4//! and connection quality monitoring in MCP systems.
5
6use std::collections::HashMap;
7
8use chrono::{DateTime, Utc};
9use serde::{Deserialize, Serialize};
10
11use super::capabilities::PingOrigin;
12
13/// Context for ping/health monitoring requests
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct PingContext {
16    /// Ping origin (client or server)
17    pub origin: PingOrigin,
18    /// Expected response time threshold in milliseconds
19    pub response_threshold_ms: Option<u64>,
20    /// Custom ping payload
21    pub payload: Option<serde_json::Value>,
22    /// Health check metadata
23    pub health_metadata: HashMap<String, serde_json::Value>,
24    /// Connection quality metrics
25    pub connection_metrics: Option<ConnectionMetrics>,
26}
27
28/// Connection quality metrics
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct ConnectionMetrics {
31    /// Round-trip time in milliseconds
32    pub rtt_ms: Option<f64>,
33    /// Packet loss percentage (0.0-100.0)
34    pub packet_loss: Option<f64>,
35    /// Connection uptime in seconds
36    pub uptime_seconds: Option<u64>,
37    /// Bytes sent
38    pub bytes_sent: Option<u64>,
39    /// Bytes received
40    pub bytes_received: Option<u64>,
41    /// Last successful communication timestamp
42    pub last_success: Option<DateTime<Utc>>,
43}