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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-grpc-bridge`. Safety classification: **STANDARD**.
//!
//! gRPC-over-HTTP/2 + gRPC-Web Wire-Codec — pure-Rust `no_std +
//! alloc`, `forbid(unsafe_code)`. Implementiert die gRPC-spezifischen
//! Wire-Elemente die ueber dem HTTP/2-Stack sitzen: Length-Prefixed-
//! Message (LPM), Path-Parsing, Timeout-Header, Status-Codes,
//! Custom-Metadata-Encoding (inkl. `-bin`-Suffix-Konvention),
//! gRPC-Web-Trailer-Frames und ein gRPC-Server-Skeleton fuer
//! Caller-konfigurierte HTTP/2-Listener.
//!
//! Spec: gRPC HTTP/2 Protocol (Length-Prefixed Message + Path +
//! Timeout + Status + Custom-Metadata) + gRPC-Web Specification
//! (Trailer-Frame + Content-Types).
//!
//! ## Schichten-Position
//!
//! Layer 5 — Bridges. Sitzt auf [`zerodds-http2`](../zerodds_http2/index.html)
//! (RFC 9113 Framing + Stream-State + Flow-Control) und
//! [`zerodds-hpack`](../zerodds_hpack/index.html) (RFC 7541 Header-
//! Compression). HTTP/2-Connection-Lifecycle und HEADERS/CONTINUATION-
//! Encoding kommen aus diesen Substrat-Crates; gRPC-Bridge konzentriert
//! sich auf das gRPC-Application-Layer-Wire-Format.
//!
//! ## Public API (Stand 1.0.0-rc.1)
//!
//! - [`encode_message`] / [`decode_message`] / [`FrameError`] — gRPC
//! Length-Prefixed-Message (LPM): Compressed-Flag (1 byte) +
//! Message-Length (4-byte BE) + Message-Bytes.
//! - [`parse_path`] / [`PathError`] — `/<service>/<method>` aus HTTP
//! `:path`.
//! - [`encode_timeout`] / [`decode_timeout`] / [`TimeoutUnit`] /
//! [`TimeoutError`] — `grpc-timeout` Header value + unit
//! (H/M/S/m/u/n).
//! - [`Status`] — alle 17 gRPC Status-Codes (0..=16).
//! - [`encode_header_value`] / [`decode_header_value`] /
//! [`encode_base64`] / [`decode_base64`] / [`is_binary_header`] /
//! [`BIN_SUFFIX`] / [`MetadataError`] — Custom-Metadata-Encoding
//! (`-bin`-Suffix → Base64).
//! - [`request_headers`] / [`response_headers`] / [`content_types`]
//! — Standard-Header-Sets fuer Request/Response/gRPC-Web/JSON.
//! - [`GrpcServer`] / [`GrpcRequest`] / [`GrpcResponse`] — gRPC-
//! Server-Skeleton fuer Caller-konfigurierte HTTP/2-Listener.
//!
//! ## Beispiel
//!
//! ```rust
//! use zerodds_grpc_bridge::{decode_message, encode_message};
//!
//! let msg = b"hello-grpc";
//! let wire = encode_message(msg, false).expect("encode");
//! let (flag, payload, consumed) = decode_message(&wire).expect("decode");
//! assert_eq!(flag, 0);
//! assert_eq!(payload, msg);
//! assert_eq!(consumed, wire.len());
//! ```
extern crate alloc;
// Bridge-Security-Adapter (Bridge-Spec §7.1 TLS via rustls/HTTP-2-ALPN,
// §7.2 Auth-Modes, §7.3 Topic-ACL). std-only.
// Daemon-Runtime-Adapter + QoS-Translation. std-only.
pub use ;
pub use ;
pub use ;
pub use ;
pub use Status;
pub use ;