pub type OwnedServerReflectionRequestView = ::buffa::view::OwnedView<
crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionRequestView<
'static,
>,
>;
pub type OwnedServerReflectionResponseView = ::buffa::view::OwnedView<
crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionResponseView<
'static,
>,
>;
impl ::connectrpc::Encodable<
crate::proto::grpc::reflection::v1alpha::ServerReflectionResponse,
>
for crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionResponseView<
'_,
> {
fn encode(
&self,
codec: ::connectrpc::CodecFormat,
) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
::connectrpc::__codegen::encode_view_body(self, codec)
}
}
impl ::connectrpc::Encodable<
crate::proto::grpc::reflection::v1alpha::ServerReflectionResponse,
>
for ::buffa::view::OwnedView<
crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionResponseView<
'static,
>,
> {
fn encode(
&self,
codec: ::connectrpc::CodecFormat,
) -> ::std::result::Result<::buffa::bytes::Bytes, ::connectrpc::ConnectError> {
::connectrpc::__codegen::encode_view_body(self.reborrow(), codec)
}
}
pub const SERVER_REFLECTION_SERVICE_NAME: &str = "grpc.reflection.v1alpha.ServerReflection";
pub const SERVER_REFLECTION_SERVER_REFLECTION_INFO_SPEC: ::connectrpc::Spec = ::connectrpc::Spec::server(
"/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo",
::connectrpc::StreamType::BidiStream,
)
.with_idempotency_level(::connectrpc::IdempotencyLevel::Unknown);
#[allow(clippy::type_complexity)]
pub trait ServerReflection: Send + Sync + 'static {
fn server_reflection_info(
&self,
ctx: ::connectrpc::RequestContext,
requests: ::connectrpc::InboundStream<
crate::proto::grpc::reflection::v1alpha::ServerReflectionRequest,
>,
) -> impl ::std::future::Future<
Output = ::connectrpc::ServiceResult<
::connectrpc::ServiceStream<
impl ::connectrpc::Encodable<
crate::proto::grpc::reflection::v1alpha::ServerReflectionResponse,
> + Send + use<Self>,
>,
>,
> + Send;
}
pub trait ServerReflectionExt: ServerReflection {
fn register(
self: ::std::sync::Arc<Self>,
router: ::connectrpc::Router,
) -> ::connectrpc::Router;
}
impl<S: ServerReflection> ServerReflectionExt for S {
fn register(
self: ::std::sync::Arc<Self>,
router: ::connectrpc::Router,
) -> ::connectrpc::Router {
router
.route_view_bidi_stream::<
_,
_,
crate::proto::grpc::reflection::v1alpha::ServerReflectionResponse,
>(
SERVER_REFLECTION_SERVICE_NAME,
"ServerReflectionInfo",
::connectrpc::view_bidi_streaming_handler_fn({
let svc = ::std::sync::Arc::clone(&self);
move |ctx, req| {
let svc = ::std::sync::Arc::clone(&svc);
async move {
let req = ::connectrpc::dispatcher::codegen::into_stream_messages::<
crate::proto::grpc::reflection::v1alpha::ServerReflectionRequest,
>(req);
svc.server_reflection_info(ctx, req).await
}
}
}),
)
.with_spec(SERVER_REFLECTION_SERVER_REFLECTION_INFO_SPEC)
}
}
#[doc(hidden)]
pub struct ServerReflectionRegisterMarker;
impl<S: ServerReflection> ::connectrpc::ServiceRegister<ServerReflectionRegisterMarker>
for ::std::sync::Arc<S> {
fn register_service(self, router: ::connectrpc::Router) -> ::connectrpc::Router {
<S as ServerReflectionExt>::register(self, router)
}
}
pub struct ServerReflectionServer<T> {
inner: ::std::sync::Arc<T>,
}
impl<T: ServerReflection> ServerReflectionServer<T> {
pub fn new(service: T) -> Self {
Self {
inner: ::std::sync::Arc::new(service),
}
}
pub fn from_arc(inner: ::std::sync::Arc<T>) -> Self {
Self { inner }
}
}
impl<T> Clone for ServerReflectionServer<T> {
fn clone(&self) -> Self {
Self {
inner: ::std::sync::Arc::clone(&self.inner),
}
}
}
impl<T: ServerReflection> ::connectrpc::Dispatcher for ServerReflectionServer<T> {
#[inline]
fn lookup(
&self,
path: &str,
) -> Option<::connectrpc::dispatcher::codegen::MethodDescriptor> {
let method = path.strip_prefix("grpc.reflection.v1alpha.ServerReflection/")?;
match method {
"ServerReflectionInfo" => {
Some(
::connectrpc::dispatcher::codegen::MethodDescriptor::bidi_streaming()
.with_spec(SERVER_REFLECTION_SERVER_REFLECTION_INFO_SPEC),
)
}
_ => None,
}
}
fn call_unary(
&self,
path: &str,
ctx: ::connectrpc::RequestContext,
request: ::connectrpc::Payload,
format: ::connectrpc::CodecFormat,
) -> ::connectrpc::dispatcher::codegen::UnaryResult {
let Some(method) = path.strip_prefix("grpc.reflection.v1alpha.ServerReflection/")
else {
return ::connectrpc::dispatcher::codegen::unimplemented_unary(path);
};
let _ = (&ctx, &request, &format);
match method {
_ => ::connectrpc::dispatcher::codegen::unimplemented_unary(path),
}
}
fn call_server_streaming(
&self,
path: &str,
ctx: ::connectrpc::RequestContext,
request: ::buffa::bytes::Bytes,
format: ::connectrpc::CodecFormat,
) -> ::connectrpc::dispatcher::codegen::StreamingResult {
let Some(method) = path.strip_prefix("grpc.reflection.v1alpha.ServerReflection/")
else {
return ::connectrpc::dispatcher::codegen::unimplemented_streaming(path);
};
let _ = (&ctx, &request, &format);
match method {
_ => ::connectrpc::dispatcher::codegen::unimplemented_streaming(path),
}
}
fn call_client_streaming(
&self,
path: &str,
ctx: ::connectrpc::RequestContext,
requests: ::connectrpc::dispatcher::codegen::RequestStream,
format: ::connectrpc::CodecFormat,
) -> ::connectrpc::dispatcher::codegen::UnaryResult {
let Some(method) = path.strip_prefix("grpc.reflection.v1alpha.ServerReflection/")
else {
return ::connectrpc::dispatcher::codegen::unimplemented_unary(path);
};
let _ = (&ctx, &requests, &format);
match method {
_ => ::connectrpc::dispatcher::codegen::unimplemented_unary(path),
}
}
fn call_bidi_streaming(
&self,
path: &str,
ctx: ::connectrpc::RequestContext,
requests: ::connectrpc::dispatcher::codegen::RequestStream,
format: ::connectrpc::CodecFormat,
) -> ::connectrpc::dispatcher::codegen::StreamingResult {
let Some(method) = path.strip_prefix("grpc.reflection.v1alpha.ServerReflection/")
else {
return ::connectrpc::dispatcher::codegen::unimplemented_streaming(path);
};
let _ = (&ctx, &requests, &format);
match method {
"ServerReflectionInfo" => {
let svc = ::std::sync::Arc::clone(&self.inner);
Box::pin(async move {
let req_stream = ::connectrpc::dispatcher::codegen::decode_message_request_stream::<
crate::proto::grpc::reflection::v1alpha::ServerReflectionRequest,
>(requests, format);
let resp = svc.server_reflection_info(ctx, req_stream).await?;
Ok(
resp
.map_body(|s| ::connectrpc::dispatcher::codegen::encode_response_stream::<
crate::proto::grpc::reflection::v1alpha::ServerReflectionResponse,
_,
_,
>(s, format)),
)
})
}
_ => ::connectrpc::dispatcher::codegen::unimplemented_streaming(path),
}
}
}
#[cfg(feature = "client")]
#[derive(Clone)]
pub struct ServerReflectionClient<T> {
transport: T,
config: ::connectrpc::client::ClientConfig,
}
#[cfg(feature = "client")]
impl<T> ServerReflectionClient<T>
where
T: ::connectrpc::client::ClientTransport,
<T::ResponseBody as ::connectrpc::http_body::Body>::Error: ::std::fmt::Display,
{
pub fn new(transport: T, config: ::connectrpc::client::ClientConfig) -> Self {
Self { transport, config }
}
pub fn config(&self) -> &::connectrpc::client::ClientConfig {
&self.config
}
pub fn config_mut(&mut self) -> &mut ::connectrpc::client::ClientConfig {
&mut self.config
}
pub async fn server_reflection_info(
&self,
) -> Result<
::connectrpc::client::BidiStream<
T::ResponseBody,
crate::proto::grpc::reflection::v1alpha::ServerReflectionRequest,
crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionResponseView<
'static,
>,
>,
::connectrpc::ConnectError,
> {
self.server_reflection_info_with_options(
::connectrpc::client::CallOptions::default(),
)
.await
}
pub async fn server_reflection_info_with_options(
&self,
options: ::connectrpc::client::CallOptions,
) -> Result<
::connectrpc::client::BidiStream<
T::ResponseBody,
crate::proto::grpc::reflection::v1alpha::ServerReflectionRequest,
crate::proto::grpc::reflection::v1alpha::__buffa::view::ServerReflectionResponseView<
'static,
>,
>,
::connectrpc::ConnectError,
> {
::connectrpc::client::call_bidi_stream(
&self.transport,
&self.config,
SERVER_REFLECTION_SERVICE_NAME,
"ServerReflectionInfo",
options,
)
.await
}
}