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}