Skip to main content

grapsus_agent_protocol/v2/
mod.rs

1//! Protocol v2 types for Agent Protocol 2.0
2//!
3//! This module provides the v2 protocol types including:
4//! - Capability negotiation
5//! - Health reporting
6//! - Flow control
7//! - Metrics export
8//! - Bidirectional streaming
9//! - v2 server and client implementations
10
11mod capabilities;
12pub mod client;
13mod control;
14mod health;
15mod metrics;
16pub mod observability;
17pub mod pool;
18pub mod protocol_metrics;
19pub mod reverse;
20pub mod server;
21mod streaming;
22pub mod uds;
23pub mod uds_server;
24
25pub use capabilities::*;
26pub use client::{AgentClientV2, CancelReason, ConfigUpdateCallback, FlowState, MetricsCallback};
27pub use control::*;
28pub use health::*;
29pub use metrics::*;
30pub use observability::{
31    AgentConnection, ConfigPusher, ConfigPusherConfig, ConfigUpdateHandler, MetricsCollector,
32    MetricsCollectorConfig, MetricsSnapshot, PushResult, PushStatus, UnifiedMetricsAggregator,
33};
34pub use pool::{AgentPool, AgentPoolConfig, AgentPoolStats, LoadBalanceStrategy, V2Transport};
35pub use protocol_metrics::{
36    HistogramMetric, HistogramSnapshot, ProtocolMetrics, ProtocolMetricsSnapshot,
37};
38pub use reverse::{
39    RegistrationRequest, RegistrationResponse, ReverseConnectionClient, ReverseConnectionConfig,
40    ReverseConnectionListener,
41};
42pub use server::{
43    AgentHandlerV2, DrainReason, GrpcAgentHandlerV2, GrpcAgentServerV2, ShutdownReason,
44};
45pub use streaming::*;
46pub use uds::{
47    AgentClientV2Uds, MessageType, UdsCapabilities, UdsEncoding, UdsFeatures, UdsHandshakeRequest,
48    UdsHandshakeResponse, UdsLimits, MAX_UDS_MESSAGE_SIZE,
49};
50pub use uds_server::UdsAgentServerV2;
51
52/// Protocol version 2
53pub const PROTOCOL_VERSION_2: u32 = 2;
54
55/// Check if a version is supported by v2.
56pub fn supports_version(version: u32) -> bool {
57    version <= PROTOCOL_VERSION_2
58}
59
60#[cfg(test)]
61mod tests {
62    use super::*;
63
64    #[test]
65    fn test_version_support() {
66        assert!(supports_version(1));
67        assert!(supports_version(2));
68        assert!(!supports_version(3));
69    }
70}