zerodds-http2

Layer 5 — Bridges. HTTP/2 (RFC 9113) wire codec.

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.

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.