rust_control_plane/service/discovery/
cluster.rs1use crate::service::common::{Service, StreamResponse};
2use crate::snapshot::type_url::CLUSTER;
3use data_plane_api::envoy::service::cluster::v3::cluster_discovery_service_server::ClusterDiscoveryService;
4use data_plane_api::envoy::service::discovery::v3::{
5 DeltaDiscoveryRequest, DeltaDiscoveryResponse, DiscoveryRequest, DiscoveryResponse,
6};
7use tonic::{Request, Response, Status, Streaming};
8
9#[tonic::async_trait]
10impl ClusterDiscoveryService for Service {
11 type StreamClustersStream = StreamResponse<DiscoveryResponse>;
12
13 async fn stream_clusters(
14 &self,
15 req: Request<Streaming<DiscoveryRequest>>,
16 ) -> Result<Response<Self::StreamClustersStream>, Status> {
17 self.stream(req, CLUSTER)
18 }
19
20 type DeltaClustersStream = StreamResponse<DeltaDiscoveryResponse>;
21
22 async fn delta_clusters(
23 &self,
24 _: Request<Streaming<DeltaDiscoveryRequest>>,
25 ) -> Result<Response<Self::DeltaClustersStream>, Status> {
26 unimplemented!()
27 }
28
29 async fn fetch_clusters(
30 &self,
31 req: Request<DiscoveryRequest>,
32 ) -> Result<Response<DiscoveryResponse>, Status> {
33 self.fetch(req.get_ref(), CLUSTER).await
34 }
35}