~/bend-docscommunity

hpack.bend checks

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

RFC 7541 HPACK header blocks with a bounded dynamic table.

3 imports
import Base
import bend-kit-bytes@0.3.1.0/bytes.bend as Bytes
import ./huffman.bend as Huff

Types

type Field source · line 7 · raw

Data

mode: 0 permits indexing, 1 is without indexing, 2 is never indexed.

type State source · line 10 · raw

Data

type Cursor source · line 144 · raw

Type

type Step source · line 356 · raw

Type

Definitions

def new source · line 13 · raw

@+max:U32 -> State

def static source · line 17 · raw

@+index:U32 -> Field

RFC 7541 Appendix A, indexed from 1 to 61.

def take.of source · line 147 · raw

@r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, Maybe<&2, U32>) -> @+at:U32 -> @+length:U32 -> Maybe<&1, Pair(Cursor, U32)>

def take source · line 155 · raw

@c:Cursor -> Maybe<&1, Pair(Cursor, U32)>

def with_pair source · line 159 · raw

@-R:Type -> @r:Pair(Cursor, U32) -> @k:(@_:Cursor -> @_:U32 -> R) -> R

def with_taken source · line 163 · raw

@-R:Type -> @m:Maybe<&1, Pair(Cursor, U32)> -> @k:(@_:Cursor -> @_:U32 -> Maybe<&1, R>) -> Maybe<&1, R>

def within source · line 170 · raw

@ok:Bool -> Maybe<&1, Unit>

def integer.done source · line 177 · raw

@n:Nat -> @cont:Bool -> @c:Cursor -> @+shift:U32 -> @+value:U32 -> Maybe<&1, Pair(Cursor, U32)>

def integer.more source · line 192 · raw

@full:Bool -> @c:Cursor -> @+value:U32 -> Maybe<&1, Pair(Cursor, U32)>

def integer.after source · line 199 · raw

@+byte:U32 -> @+mask:U32 -> @c:Cursor -> Maybe<&1, Pair(Cursor, U32)>

def table.at source · line 203 · raw

@xs:List<&2, Field> -> @n:Nat -> Maybe<&2, Field>

def indexed.static source · line 213 · raw

@valid:Bool -> @+i:U32 -> Maybe<&2, Field>

def indexed.choose source · line 219 · raw

@s:Bool -> @+i:U32 -> @xs:List<&2, Field> -> Maybe<&2, Field>

def indexed source · line 225 · raw

@+i:U32 -> @st:State -> Maybe<&2, Field>

def literal.decoded source · line 229 · raw

@huff:Bool -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Maybe<&2, String>

def literal.result source · line 236 · raw

@m:Maybe<&2, String> -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+at:U32 -> @+count:U32 -> @+length:U32 -> Maybe<&1, Pair(Cursor, String)>

def literal.slice source · line 243 · raw

@r:Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes) -> @huff:Bool -> @+at:U32 -> @+count:U32 -> @+length:U32 -> Maybe<&1, Pair(Cursor, String)>

def literal.fits source · line 247 · raw

@ok:Bool -> @huff:Bool -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+at:U32 -> @+count:U32 -> @+length:U32 -> Maybe<&1, Pair(Cursor, String)>

def literal.bytes source · line 254 · raw

@huff:Bool -> @c:Cursor -> @+count:U32 -> Maybe<&1, Pair(Cursor, String)>

def literal source · line 258 · raw

@c:Cursor -> Maybe<&1, Pair(Cursor, String)>

def field.size source · line 263 · raw

@f:Field -> U32

def table.trim.go source · line 267 · raw

@xs:List<&2, Field> -> @+room:U32 -> @keep:Bool -> @+acc:List<&2, Field> -> @+used:U32 -> Pair(List<&2, Field>, U32)

def table.trim source · line 280 · raw

@xs:List<&2, Field> -> @+capacity:U32 -> Pair(List<&2, Field>, U32)

def table.trimmed source · line 283 · raw

@r:Pair(List<&2, Field>, U32) -> @+capacity:U32 -> @+allowed:U32 -> @pending:Maybe<&2, U32> -> @minimum:Maybe<&2, U32> -> State

def table.add source · line 287 · raw

@room:Bool -> @+field:Field -> @xs:List<&2, Field> -> @+used:U32 -> @+capacity:U32 -> @+allowed:U32 -> @pending:Maybe<&2, U32> -> @minimum:Maybe<&2, U32> -> State

def table.oversize source · line 294 · raw

@too_big:Bool -> @+field:Field -> @xs:List<&2, Field> -> @+used:U32 -> @+capacity:U32 -> @+allowed:U32 -> @pending:Maybe<&2, U32> -> @minimum:Maybe<&2, U32> -> State

def table.insert source · line 300 · raw

@+field:Field -> @st:State -> State

def field.matches source · line 305 · raw

@exact:Bool -> @f:Field -> @+name:String -> @+value:String -> Bool

def find.static source · line 314 · raw

@+exact:Bool -> @n:Nat -> @+i:U32 -> @+name:String -> @+value:String -> @found:U32 -> U32

def find.dynamic source · line 324 · raw

@+exact:Bool -> @xs:List<&2, Field> -> @+i:U32 -> @+name:String -> @+value:String -> @found:U32 -> U32

def find.in_dynamic source · line 334 · raw

@exact:Bool -> @st:State -> @+name:String -> @+value:String -> @found:U32 -> U32

def find.index source · line 338 · raw

@+exact:Bool -> @st:State -> @+name:String -> @+value:String -> U32

def limit.min source · line 341 · raw

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

def set_limit source · line 348 · raw

@+n:U32 -> @st:State -> State

def table.resize source · line 352 · raw

@+n:U32 -> @st:State -> State

def with_text.pair source · line 359 · raw

@-R:Type -> @r:Pair(Cursor, String) -> @k:(@_:Cursor -> @_:String -> R) -> R

def with_text source · line 363 · raw

@-R:Type -> @m:Maybe<&1, Pair(Cursor, String)> -> @k:(@_:Cursor -> @_:String -> Maybe<&1, R>) -> Maybe<&1, R>

def name.indexed source · line 370 · raw

@m:Maybe<&2, Field> -> @c:Cursor -> Maybe<&1, Pair(Cursor, String)>

def name.read source · line 377 · raw

@+i:U32 -> @st:State -> @c:Cursor -> Maybe<&1, Pair(Cursor, String)>

def decode.indexed.field source · line 384 · raw

@m:Maybe<&2, Field> -> @st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.indexed source · line 391 · raw

@+first:U32 -> @+st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.literal.finish source · line 395 · raw

@insert:Bool -> @+field:Field -> @st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.literal source · line 402 · raw

@+first:U32 -> @+mask:U32 -> @+mode:U32 -> @+st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.min source · line 408 · raw

@m:Maybe<&2, U32> -> @+n:U32 -> Bool

def decode.updated.from source · line 415 · raw

@st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.updated source · line 419 · raw

@n:U32 -> @st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.update.valid source · line 422 · raw

@valid:Bool -> @+n:U32 -> @st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.update.value source · line 429 · raw

@+n:U32 -> @st:State -> @c:Cursor -> Maybe<&1, Step>

def decode.update source · line 434 · raw

@+first:U32 -> @st:State -> @c:Cursor -> @seen:Bool -> Maybe<&1, Step>

def decode.ready source · line 440 · raw

@st:State -> Bool

def decode.kind source · line 444 · raw

@+first:U32 -> U32

def decode.representation source · line 449 · raw

@kind:U32 -> @+first:U32 -> @c:Cursor -> @+st:State -> @seen:Bool -> Maybe<&1, Step>

def decode.one source · line 466 · raw

@c:Cursor -> @+st:State -> @seen:Bool -> Maybe<&1, Step>

def decode.add source · line 470 · raw

@m:Maybe<&2, Field> -> @acc:List<&2, Field> -> @seen:Bool -> Pair(List<&2, Field>, Bool)

def with_step source · line 477 · raw

@-R:Type -> @step:Step -> @k:(@_:State -> @_:Cursor -> @_:Maybe<&2, Field> -> R) -> R

def with_end source · line 481 · raw

@-R:Type -> @c:Cursor -> @k:(@_:Cursor -> @_:Bool -> R) -> R

def with_fields source · line 485 · raw

@-R:Type -> @r:Pair(List<&2, Field>, Bool) -> @k:(@_:List<&2, Field> -> @_:Bool -> R) -> R

def decode.go source · line 489 · raw

@fuel:Nat -> @ended:Bool -> @c:Cursor -> @st:State -> @acc:List<&2, Field> -> @+seen:Bool -> Maybe<&1, Pair(State, List<&2, Field>)>

def decode source · line 504 · raw

@block:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @st:State -> Maybe<&1, Pair(State, List<&2, Field>)>

def integer.tail source · line 509 · raw

@n:Nat -> @+value:U32 -> @active:Bool -> String

def integer.encoded source · line 519 · raw

@small:Bool -> @+prefix:U32 -> @+mask:U32 -> @+value:U32 -> 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes

def integer.encode source · line 527 · raw

@+prefix:U32 -> @+mask:U32 -> @+value:U32 -> 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes

def octets.valid source · line 530 · raw

@s:String -> Bool

def literal.raw source · line 537 · raw

@+s:String -> Maybe<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def literal.pack source · line 542 · raw

@b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @huff:Bool -> 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes

def literal.encode source · line 546 · raw

@huff:Bool -> @s:String -> Maybe<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def name.parts source · line 553 · raw

@+index:U32 -> @huff:Bool -> @name:String -> Maybe<&1, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>>

def encode.literal.bytes source · line 560 · raw

@+index:U32 -> @+prefix:U32 -> @+mask:U32 -> @+huff:Bool -> @name:String -> @value:String -> Maybe<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>

def encode.literal.done source · line 567 · raw

@insert:Bool -> @field:Field -> @st:State -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>

def encode.literal source · line 574 · raw

@+mode:U32 -> @+name:String -> @+value:String -> @huff:Bool -> @+st:State -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>

def encode.exact source · line 582 · raw

@found:Bool -> @+index:U32 -> @+name:String -> @+value:String -> @huff:Bool -> @st:State -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>

def encode.field source · line 589 · raw

@f:Field -> @huff:Bool -> @+st:State -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>

def encode.cleared source · line 603 · raw

@st:State -> @pieces:List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes> -> Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>)

def encode.emit source · line 607 · raw

@smaller:Bool -> @+minimum:U32 -> @+final:U32 -> @st:State -> Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>)

def encode.pending source · line 615 · raw

@m:Maybe<&2, U32> -> @minimum:Maybe<&2, U32> -> @st:State -> Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>)

def encode.prepare source · line 623 · raw

@st:State -> Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>)

def with_encoded source · line 627 · raw

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

def encode.go source · line 631 · raw

@xs:List<&2, Field> -> @+huff:Bool -> @st:State -> @acc:List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes> -> Maybe<&1, Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>)>

def encode.finish source · line 640 · raw

@r:Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>) -> Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)

def encode.from source · line 644 · raw

@r:Pair(State, List<&1, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes>) -> @fields:List<&2, Field> -> @huff:Bool -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>

def encode source · line 649 · raw

@fields:List<&2, Field> -> @huff:Bool -> @st:State -> Maybe<&1, Pair(State, 0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes)>