rust_control_plane/service/discovery/
scopedroute.rs

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