1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! gRPC support for unary RPCs over HTTP/2.
//!
//! Provides `GrpcRequest<T>` extractor and `GrpcResponse<T>` responder that
//! handle gRPC framing (length-prefixed protobuf messages) and integrate with
//! Tako's handler system.
//!
//! # Examples
//!
//! ```rust,ignore
//! use tako::grpc::{GrpcRequest, GrpcResponse};
//! use prost::Message;
//!
//! #[derive(Clone, PartialEq, Message)]
//! struct HelloRequest {
//! #[prost(string, tag = "1")]
//! pub name: String,
//! }
//!
//! #[derive(Clone, PartialEq, Message)]
//! struct HelloReply {
//! #[prost(string, tag = "1")]
//! pub message: String,
//! }
//!
//! async fn say_hello(req: GrpcRequest<HelloRequest>) -> GrpcResponse<HelloReply> {
//! GrpcResponse::ok(HelloReply {
//! message: format!("Hello, {}!", req.message.name),
//! })
//! }
//!
//! // Register on router:
//! // router.route(Method::POST, "/helloworld.Greeter/SayHello", say_hello);
//! ```
/// `grpc.health.v1` scaffolding.
/// gRPC-specific interceptor pattern.
/// `grpc.reflection.v1` scaffolding.
/// gRPC-Web bridge translating browser-friendly framing to canonical gRPC.
pub use GrpcError;
pub use MAX_GRPC_MESSAGE_SIZE;
pub use grpc_decode;
pub use grpc_encode;
pub use GrpcRequest;
pub use GrpcResponse;
pub use GrpcStatus;
pub use GrpcStatusCode;
pub use build_grpc_error_response;
pub use GrpcBidi;
pub use GrpcClientStream;
pub use GrpcServerStream;
pub use GrpcDeadline;
pub use parse_grpc_timeout;
pub use read_grpc_deadline;