http2.bend checks
raw source on the hub · import bend-kit-http2@0.1.0.0/http2.bend as Http2
RFC 9113 HTTP/2 frame codec over packed Bytes.
2 imports
import Base import bend-kit-bytes@0.3.1.0/bytes.bend as Bytes
Types
type Frame source · line 5 · raw
Type
Frame@kind:U32 -> @flags:U32 -> @stream:U32 -> @payload:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Frame
type Error source · line 8 · raw
Data
Error@code:U32 -> @connection:Bool -> @stream:U32 -> Error
type Decode source · line 11 · raw
Type
Need@input:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
Got@frame:Frame -> @rest:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
Bad@error:Error -> Decode
type Checked source · line 16 · raw
Type
Valid@frame:Frame -> Checked
Invalid@error:Error -> Checked
Definitions
def fail source · line 22 · 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 25 · raw
@bad:Bool -> @+code:U32 -> @+connection:Bool -> @+stream:U32 -> Maybe<&2, Error>
def first source · line 32 · raw
@m:Maybe<&2, Error> -> @n:Maybe<&2, Error> -> Maybe<&2, Error>
def number source · line 39 · raw
@m:Maybe<&2, U32> -> U32
def with_number source · line 46 · raw
@-R:Type -> @r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, U32>) -> @k:(@_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @_:U32 -> R) -> R
def with_slice source · line 50 · raw
@-R:Type -> @r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes) -> @k:(@_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @_:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> R) -> R
def has source · line 54 · raw
@+flags:U32 -> @+bit:U32 -> Bool
def size.scope source · line 58 · raw
@+kind:U32 -> @+stream:U32 -> Bool
Field blocks, SETTINGS, and stream 0 make frame-size faults connection-wide.
def size.error source · line 71 · raw
@+kind:U32 -> @+stream:U32 -> Error
def size.reject source · line 75 · raw
@oversized:Bool -> @+kind:U32 -> @+stream:U32 -> Maybe<&2, Error>
def padding source · line 83 · 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 86 · raw
@+id:U32 -> @+value:U32 -> Maybe<&2, Error>
def settings.go source · line 97 · raw
@n:Nat -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+at:U32 -> @m:Maybe<&2, Error> -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, Error>)
def rules source · line 106 · 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 148 · raw
@m:Maybe<&2, Error> -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def with_settings source · line 155 · raw
@r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, Error>) -> @+flags:U32 -> @+stream:U32 -> Checked
def inspect.settings source · line 159 · raw
@m:Maybe<&2, Error> -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect.promised source · line 166 · raw
@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @+pad:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect.padded.if source · line 175 · raw
@padded:Bool -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect.padded source · line 183 · raw
@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect.detail source · line 186 · raw
@+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect.basic source · line 203 · raw
@m:Maybe<&2, Error> -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @+len:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def inspect source · line 210 · raw
@max:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Checked
def allowed source · line 219 · raw
@+kind:U32 -> U32
max is the peer's SETTINGS_MAX_FRAME_SIZE, initially 16384.
def encode.buffer source · line 244 · raw
@b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @src:Array<U32> -> @+len:U32 -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>
def encode.flags source · line 248 · 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 256 · raw
@c:Checked -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>
def encode source · line 262 · raw
@max:U32 -> @f:Frame -> Result<&1, &1, Error, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>
def parse.result source · line 266 · raw
@c:Checked -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+len:U32 -> Decode
def parse.payload source · line 275 · raw
@max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
def parse.full source · line 279 · raw
@enough:Bool -> @max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
def parse.size source · line 286 · raw
@oversized:Bool -> @max:U32 -> @+len:U32 -> @+kind:U32 -> @+flags:U32 -> @+stream:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
def parse.header source · line 294 · raw
@+max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
def parse.start source · line 301 · raw
@short:Bool -> @max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
def parse source · line 309 · raw
@max:U32 -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Decode
A partial header or payload returns Need with the original input intact.