def decode.go

bend-kit-http2@0.4.0.0 · hpack.bend:489

import bend-kit-http2@0.4.0.0/hpack.bend as Hpack
import Base

489def decode.go(fuel: Nat, ended: Bool, c: Cursor, st: State, acc: List<&2, Field>, +seen: Bool) -> Maybe<&1, State & List<&2, Field>>:
490  match fuel ended:
491    case 0n False{}:
492      None{}
493    case 0n True{}:
494      Some{(st, List.reverse(&2, Field, acc))}
495    case 1n+p True{}:
496      Some{(st, List.reverse(&2, Field, acc))}
497    case 1n+p False{}:
498      Maybe.bind(&1, Step, State & List<&2, Field>, decode.one(c, st, seen), step =>
499        with_step(Maybe<&1, State & List<&2, Field>>, step, state => cursor => field =>
500          with_end(Maybe<&1, State & List<&2, Field>>, cursor, cursor => ended =>
501            with_fields(Maybe<&1, State & List<&2, Field>>, decode.add(field, acc, seen), fields => was_field =>
502              decode.go(p, ended, cursor, state, fields, was_field)))))

Uses (17)

Used by (1)