eba4fd1
use std::net::SocketAddr;
use tonic::transport::Server;
use admin::AdminService;
use crate::auth::TrustedBackend;
use crate::proto::admin_server::AdminServer;
use crate::service::AdminRpc;
pub async fn serve(
service: AdminService,
addr: SocketAddr,
trusted_keys: Vec<String>,
shutdown: impl std::future::Future<Output = ()> + Send + 'static,
) -> Result<(), tonic::transport::Error> {
let interceptor = TrustedBackend::new(trusted_keys);
Server::builder()
.add_service(AdminServer::with_interceptor(
AdminRpc::new(service),
interceptor,
))
.serve_with_shutdown(addr, shutdown)
.await
}