use crate::pb::ref_service_server::RefService; use crate::pb::*; use super::GitksService; #[tonic::async_trait] impl RefService for GitksService { async fn find_default_branch_name( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/FindDefaultBranchName"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.find_default_branch_name().map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } async fn ref_exists( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/RefExists"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.ref_exists(inner).map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } async fn update_references( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/UpdateReferences"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.update_references(inner).map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } async fn delete_refs( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/DeleteRefs"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.delete_refs(inner).map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } async fn find_refs_by_oid( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/FindRefsByOID"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.find_refs_by_oid(inner).map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } async fn list_refs( &self, request: tonic::Request, ) -> Result, tonic::Status> { let m = crate::metrics::RequestMetrics::new("gitks.RefService/ListRefs"); let inner = request.into_inner(); let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?; let gb = self.resolve(inner.repository.as_ref())?; let resp = gb.list_all_refs(inner).map_err(super::into_status)?; m.record("ok"); Ok(tonic::Response::new(resp)) } }