tower_grpc/server/
mod.rs

1pub mod client_streaming;
2pub mod server_streaming;
3pub mod streaming;
4pub mod unary;
5pub mod unimplemented;
6
7use crate::codec::{Codec, Streaming};
8use crate::generic::server::{
9    ClientStreamingService, Grpc, ServerStreamingService, StreamingService, UnaryService,
10};
11use crate::Body;
12
13pub fn unary<T, B, R>(service: T, request: http::Request<B>) -> unary::ResponseFuture<T, B, R>
14where
15    T: UnaryService<R>,
16    R: prost::Message + Default,
17    T::Response: prost::Message,
18    B: Body,
19{
20    let mut grpc = Grpc::new(Codec::new());
21    let inner = grpc.unary(service, request);
22    unary::ResponseFuture::new(inner)
23}
24
25pub fn client_streaming<T, R, B>(
26    service: &mut T,
27    request: http::Request<B>,
28) -> client_streaming::ResponseFuture<T, Streaming<R, B>>
29where
30    T: ClientStreamingService<Streaming<R, B>>,
31    R: prost::Message + Default,
32    T::Response: prost::Message,
33    B: Body,
34{
35    let mut grpc = Grpc::new(Codec::new());
36    let inner = grpc.client_streaming(service, request);
37    client_streaming::ResponseFuture::new(inner)
38}
39
40pub fn server_streaming<T, B, R>(
41    service: T,
42    request: http::Request<B>,
43) -> server_streaming::ResponseFuture<T, B, R>
44where
45    T: ServerStreamingService<R>,
46    R: prost::Message + Default,
47    T::Response: prost::Message,
48    B: Body,
49{
50    let mut grpc = Grpc::new(Codec::new());
51    let inner = grpc.server_streaming(service, request);
52    server_streaming::ResponseFuture::new(inner)
53}
54
55pub fn streaming<T, R, B>(
56    service: &mut T,
57    request: http::Request<B>,
58) -> streaming::ResponseFuture<T, Streaming<R, B>>
59where
60    T: StreamingService<Streaming<R, B>>,
61    R: prost::Message + Default,
62    T::Response: prost::Message,
63    B: Body,
64{
65    let mut grpc = Grpc::new(Codec::new());
66    let inner = grpc.streaming(service, request);
67    streaming::ResponseFuture::new(inner)
68}
69
70pub fn unimplemented(message: String) -> unimplemented::ResponseFuture {
71    unimplemented::ResponseFuture::new(message)
72}