zerodds-http2
Layer 5 — Bridges. HTTP/2 (RFC 9113) wire codec.
- Source: crates/http2
- API docs: docs.rs/zerodds-http2
zerodds-http2 delivers the complete HTTP/2 wire layer: 9-byte
frame header + all 10 frame types, connection preface (§3.4),
SETTINGS codec with defaults (§6.5), stream state machine (§5.1),
connection + stream flow control (§5.2 + §6.9), and standard error
codes (§7). no_std + alloc, forbid(unsafe_code).
RFC 9113 superseded RFC 7540 and keeps the wire format with identical §-numbers. This crate follows the 9113 revision.
Spec anchors
- RFC 9113 §3.4 (connection preface), §4 (frame layer), §5.1
(stream state machine), §5.2 (flow control), §6.1-§6.10 (frame
types), §6.5 (SETTINGS), §6.9 (
WINDOW_UPDATE), §7 (error codes).
Layer position
Layer 5 — Bridges. Substrate for
zerodds-grpc-bridge (gRPC-over-HTTP/2 +
gRPC-Web; HEADERS/CONTINUATION via zerodds-hpack).
Quickstart
use zerodds_http2::{FrameHeader, FrameType, Flags, encode_frame, decode_frame};
use zerodds_http2::frame::DEFAULT_MAX_FRAME_SIZE;
let payload = [0u8; 8];
let header = FrameHeader {
length: 8,
frame_type: FrameType::Ping,
flags: Flags(0),
stream_id: 0,
};
let mut buf = [0u8; 17];
encode_frame(&header, &payload, &mut buf, DEFAULT_MAX_FRAME_SIZE).unwrap();
let (decoded, consumed) = decode_frame(&buf, DEFAULT_MAX_FRAME_SIZE).unwrap();
assert_eq!(consumed, 17);
assert_eq!(decoded.header.frame_type, FrameType::Ping);
Feature flags
| Feature | Default | Purpose |
|---|---|---|
std |
✅ | std::error::Error impls. |
alloc |
✅ (via std) | Vec for the settings codec. |
no_std-capable: default-features = false, features = ["alloc"].
Stability
1.0.0-rc.3. Public API + wire format (RFC 9113) + error
discriminants are RC1-stable; breaking changes require a major
bump.
zerodds-http2
Layer 5 — Bridges. HTTP/2 (RFC 9113) Wire-Codec.
- Quelle: crates/http2
- API-Docs: docs.rs/zerodds-http2
zerodds-http2 liefert die komplette HTTP/2-Wire-Schicht: 9-Byte-
Frame-Header + alle 10 Frame-Types, Connection-Preface (§3.4),
SETTINGS-Codec mit Defaults (§6.5), Stream-State-Machine (§5.1),
Connection + Stream Flow-Control (§5.2 + §6.9), und Standard-Error-
Codes (§7). no_std + alloc, forbid(unsafe_code).
RFC 9113 hat RFC 7540 abgeloest und behaelt das Wire-Format mit identischen §-Nummern. Diese Crate folgt dem 9113-Stand.
Spec-Anker
- RFC 9113 §3.4 (Connection-Preface), §4 (Frame-Layer), §5.1
(Stream-State-Machine), §5.2 (Flow-Control), §6.1-§6.10 (Frame-
Types), §6.5 (SETTINGS), §6.9 (
WINDOW_UPDATE), §7 (Error-Codes).
Schichten-Position
Layer 5 — Bridges. Substrat fuer
zerodds-grpc-bridge (gRPC-over-HTTP/2 +
gRPC-Web; HEADERS/CONTINUATION via zerodds-hpack).
Quickstart
use zerodds_http2::{FrameHeader, FrameType, Flags, encode_frame, decode_frame};
use zerodds_http2::frame::DEFAULT_MAX_FRAME_SIZE;
let payload = [0u8; 8];
let header = FrameHeader {
length: 8,
frame_type: FrameType::Ping,
flags: Flags(0),
stream_id: 0,
};
let mut buf = [0u8; 17];
encode_frame(&header, &payload, &mut buf, DEFAULT_MAX_FRAME_SIZE).unwrap();
let (decoded, consumed) = decode_frame(&buf, DEFAULT_MAX_FRAME_SIZE).unwrap();
assert_eq!(consumed, 17);
assert_eq!(decoded.header.frame_type, FrameType::Ping);
Feature-Flags
| Feature | Default | Zweck |
|---|---|---|
std |
✅ | std::error::Error-Impls. |
alloc |
✅ (via std) | Vec fuer Settings-Codec. |
no_std-fahig: default-features = false, features = ["alloc"].
Stabilitaet
1.0.0-rc.3. Public-API + Wire-Format (RFC 9113) + Fehler-
Diskriminanten sind RC1-stabil; Breaking-Changes erfordern Major-
Bump.