Expand description
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
(RFC 9113 Framing + Stream-State + Flow-Control) und
zerodds-hpack (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-timeoutHeader 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
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());Re-exports§
pub use frame::FrameError;pub use frame::decode_message;pub use frame::encode_message;pub use metadata::BIN_SUFFIX;pub use metadata::MetadataError;pub use metadata::content_types;pub use metadata::decode_base64;pub use metadata::decode_header_value;pub use metadata::encode_base64;pub use metadata::encode_header_value;pub use metadata::is_binary_header;pub use metadata::request_headers;pub use metadata::response_headers;pub use path::PathError;pub use path::parse_path;pub use server::GrpcRequest;pub use server::GrpcResponse;pub use server::GrpcServer;pub use status::Status;pub use timeout::TimeoutError;pub use timeout::TimeoutUnit;pub use timeout::decode_timeout;pub use timeout::encode_timeout;
Modules§
- bridge_
security - gRPC-Bridge §7.x Bridge-Security-Wireup.
- daemon_
runtime - Cross-Cutting Daemon-Runtime fuer den gRPC-Daemon.
- frame
- gRPC Length-Prefixed-Message — Spec §“Requests” + §“Responses”.
- metadata
- Custom-Metadata Encoding nach gRPC-Spec.
- path
- gRPC HTTP
:pathParsing — Spec §“Call-Definition”. - qos_
translation - §6 — DDS-QoS → gRPC-Behavior-Translation.
- reflection
- gRPC Server Reflection Service (
grpc.reflection.v1alpha.ServerReflection). - server
- gRPC-over-HTTP/2 Server-Skeleton.
- service_
gen - Auto-Generation gRPC-Service-Definitions pro DDS-Topic.
- status
- gRPC
grpc-statusCodes — Spec §“Status”. - timeout
- gRPC
grpc-timeoutHeader — Spec §“Timeout”.