~/bend-docscommunity

http2.bend checks

raw source on the hub · import bend-kit-http2@0.1.1.0/http2.bend as Http2

RFC 9113 HTTP/2 frames and RFC 7541 HPACK header blocks over packed Bytes.

3 imports
import Base
import bend-kit-bytes@0.3.1.0/bytes.bend as Bytes
import ./hpack.bend as Hpack

Types

type Frame source · line 6 · raw

Type

type Error source · line 9 · raw

Data

type Decode source · line 12 · raw

Type

type Checked source · line 17 · raw

Type

Definitions

def fail source · line 23 · raw

@+code:U32 -> @+connection:Bool -> @+stream:U32 -> Maybe<&2, Error>

Error codes from RFC 9113 §7: 1=PROTOCOL_ERROR, 3=FLOW_CONTROL_ERROR, 6=FRAME_SIZE_ERROR. A connection error uses stream 0.

def reject source · line 26 · raw

@bad:Bool -> @+code:U32 -> @+connection:Bool -> @+stream:U32 -> Maybe<&2, Error>

def first source · line 33 · raw

@m:Maybe<&2, Error> -> @n:Maybe<&2, Error> -> Maybe<&2, Error>

def number source · line 40 · raw

@m:Maybe<&2, U32> -> U32

def with_number source · line 47 · raw

@-R:Type -> @r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, U32>) -> @k:(@_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @_:U32 -> R) -> R

def with_slice source · line 51 · raw

@-R:Type -> @r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes) -> @k:(@_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> R) -> R

def has source · line 55 · raw

@+flags:U32 -> @+bit:U32 -> Bool

def size.scope source · line 59 · raw

@+kind:U32 -> @+stream:U32 -> Bool

Field blocks, SETTINGS, and stream 0 make frame-size faults connection-wide.

def size.error source · line 72 · raw

@+kind:U32 -> @+stream:U32 -> Error

def size.reject source · line 76 · raw

@oversized:Bool -> @+kind:U32 -> @+stream:U32 -> Maybe<&2, Error>

def padding source · line 84 · raw

@+flags:U32 -> @+len:U32 -> @+fixed:U32 -> @+pad:U32 -> Bool

A PADDED payload must contain the pad-length octet and all the padding.

def setting source · line 87 · raw

@+id:U32 -> @+value:U32 -> Maybe<&2, Error>

def settings.go source · line 98 · raw

@n:Nat -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+at:U32 -> @m:Maybe<&2, Error> -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, Error>)

def rules source · line 107 · raw

@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @+pad:U32 -> @+promised:U32 -> @+value:U32 -> @m:Maybe<&2, Error> -> Maybe<&2, Error>

def checked source · line 149 · raw

@m:Maybe<&2, Error> -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def with_settings source · line 156 · raw

@r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, Error>) -> @+flags:U32 -> @+stream:U32 -> Checked

def inspect.settings source · line 160 · raw

@m:Maybe<&2, Error> -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect.promised source · line 167 · raw

@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @+pad:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect.padded.if source · line 176 · raw

@padded:Bool -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect.padded source · line 184 · raw

@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect.detail source · line 187 · raw

@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect.basic source · line 204 · raw

@m:Maybe<&2, Error> -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def inspect source · line 211 · raw

@max:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked

def allowed source · line 220 · raw

@+kind:U32 -> U32

max is the peer's SETTINGS_MAX_FRAME_SIZE, initially 16384.

def encode.buffer source · line 245 · raw

@b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @src:Array<U32> -> @+len:U32 -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def encode.flags source · line 249 · raw

@ok:Bool -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @payload:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def encode.checked source · line 257 · raw

@c:Checked -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def encode source · line 263 · raw

@max:U32 -> @f:Frame -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def parse.result source · line 267 · raw

@c:Checked -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+len:U32 -> Decode

def parse.payload source · line 276 · raw

@max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

def parse.full source · line 280 · raw

@enough:Bool -> @max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

def parse.size source · line 287 · raw

@oversized:Bool -> @max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

def parse.header source · line 295 · raw

@+max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

def parse.start source · line 302 · raw

@short:Bool -> @max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

def parse source · line 310 · raw

@max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode

A partial header or payload returns Need with the original input intact.