rust_control_plane/service/discovery/
cluster.rs

1use 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}