1use anyhow::Error;
2use std::result::Result::Ok;
3use tonic::{ Request, Response, Streaming, transport::Channel };
4use tonic_reflection::pb::v1::{
5 ServerReflectionRequest,
6 ServerReflectionResponse,
7 server_reflection_client::ServerReflectionClient,
8 server_reflection_request::MessageRequest,
9};
10
11use crate::agent::agent_client::AgentClient;
12use crate::agent::ActiveConnectionResponse;
13use crate::agent::RequestActiveConnections;
14use crate::agent::BlocklistResponse;
15use crate::agent::AddIpToBlocklistRequest;
16use crate::agent::RmIpFromBlocklistRequest;
17use crate::agent::RmIpFromBlocklistResponse;
18use crate::agent::DroppedPacketsResponse;
19use crate::agent::LatencyMetricsResponse;
20
21#[cfg(feature = "client")]
22pub async fn send_active_connection_request(
23 mut client: AgentClient<Channel>
24) -> Result<Response<ActiveConnectionResponse>, Error> {
25 let request = Request::new(RequestActiveConnections { pod_ip: None });
26 let response = client.active_connections(request).await?;
27 Ok(response)
28}
29
30#[cfg(feature = "client")]
31pub async fn get_all_features(
32 mut client: ServerReflectionClient<Channel>
33) -> Result<Response<Streaming<ServerReflectionResponse>>, Error> {
34 let request = ServerReflectionRequest {
35 host: "".to_string(),
36 message_request: Some(MessageRequest::FileContainingSymbol("agent.Agent".to_string())),
37 };
38 let response = client.server_reflection_info(tokio_stream::iter(vec![request])).await?;
39
40 Ok(response)
41}
42
43#[cfg(feature = "client")]
44pub async fn send_create_blocklist_request(
45 mut client: AgentClient<Channel>,
46 ip: &str
47) -> Result<Response<BlocklistResponse>, Error> {
48 let ip = Some(ip.to_string());
49 let request = Request::new(AddIpToBlocklistRequest { ip });
50 let response = client.add_ip_to_blocklist(request).await?;
51 Ok(response)
52}
53
54#[cfg(feature = "client")]
55pub async fn send_check_blocklist_request(
56 mut client: AgentClient<Channel>
57) -> Result<Response<BlocklistResponse>, Error> {
58 let request = Request::new(());
59 let response = client.check_blocklist(request).await?;
60 Ok(response)
61}
62
63#[cfg(feature = "client")]
64pub async fn remove_ip_from_blocklist_request(
65 mut client: AgentClient<Channel>,
66 ip: &str
67) -> Result<Response<RmIpFromBlocklistResponse>, Error> {
68 let ip = ip.to_string();
69 let request = Request::new(RmIpFromBlocklistRequest { ip });
70 let response = client.rm_ip_from_blocklist(request).await?;
71 Ok(response)
72}
73
74#[cfg(feature = "client")]
75pub async fn send_dropped_packets_request(
76 mut client: AgentClient<Channel>,
77) -> Result<Response<DroppedPacketsResponse>, Error> {
78 let request = Request::new(());
79 let response = client.get_dropped_packets_metrics(
80 request
81 ).await?;
82 Ok(response)
83}
84
85#[cfg(feature = "client")]
86pub async fn send_latency_metrics_request(
87 mut client: AgentClient<Channel>,
88) -> Result<Response<LatencyMetricsResponse>, Error> {
89 let request = Request::new(());
90 let response = client.get_latency_metrics(
91 request
92 ).await?;
93 Ok(response)
94}