#[cfg(feature = "grpc")]
pub mod sdforge_v1 {
include!("pb/sdforge.v1.rs");
}
#[cfg(feature = "grpc")]
use crate::core::ApiMetadata;
#[cfg(feature = "grpc")]
use crate::define_registration;
mod grpc_impl;
#[cfg(all(feature = "grpc", feature = "security"))]
#[cfg(test)]
pub(crate) use grpc_impl::make_auth_interceptor;
#[cfg(feature = "grpc")]
#[allow(deprecated)]
pub use grpc_impl::{SdForgeGrpcService, build_server, build_server_with_config};
#[cfg(feature = "grpc")]
pub mod handler;
#[cfg(feature = "grpc")]
pub use handler::GrpcHandlerRegistration;
#[cfg(feature = "grpc")]
#[derive(Debug, Clone)]
pub struct GrpcRoute {
#[allow(dead_code)]
pub(crate) service_name: String,
#[allow(dead_code)]
pub(crate) metadata: ApiMetadata,
}
#[cfg(feature = "grpc")]
define_registration!(GrpcRouteRegistration, GrpcRoute, ApiMetadata);
#[cfg(feature = "grpc")]
#[derive(Clone)]
pub struct GrpcServerConfig {
pub max_connections: usize,
pub timeout_seconds: u64,
pub require_auth: bool,
#[cfg(feature = "security")]
pub auth: Option<crate::security::BearerAuth>,
pub state: Option<std::sync::Arc<dyn std::any::Any + Send + Sync>>,
#[cfg(feature = "ratelimit")]
pub rate_limiter: Option<std::sync::Arc<dyn crate::security::ratelimit::RateLimiter>>,
}
#[cfg(all(feature = "grpc", feature = "security"))]
#[derive(Clone)]
pub(crate) struct AuthGrpcInterceptor {
auth: Option<crate::security::BearerAuth>,
}
#[cfg(test)]
#[cfg(feature = "grpc")]
mod tests;