def client.receive.go

bend-kit-http2@0.4.0.0 · http2.bend:1215

import bend-kit-http2@0.4.0.0/http2.bend as Http2
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import bend-kit-http2@0.4.0.0/hpack.bend as Hpack

1215def client.receive.go(n: Nat, d: Decode, streams: List<&1, Stream>,
1216    encoder: Hpack.State, decoder: Hpack.State, control: Control,
1217    rev_writes: List<&1, Bytes.Bytes>, rev_events: List<&1, ClientEvent>) -> Reply:
1218  match n:
1219    case 0n:
1220      client.fail(1, True{}, 0)
1221    case 1n+p:
1222      match d:
1223        case Need{input}:
1224          Advanced{Client{input, streams, encoder, decoder, control},
1225            List.reverse(&1, Bytes.Bytes, rev_writes), List.reverse(&1, ClientEvent, rev_events)}
1226        case Bad{error}:
1227          Failed{error}
1228        case Got{frame, rest}:
1229          client.after(client.apply(frame, Client{rest, streams, encoder, decoder, control}),
1230            next => writes => events =>
1231              client.receive.advance(next, more => streams2 => enc => dec => ctl =>
1232                client.receive.go(p, more, streams2, enc, dec, ctl,
1233                  List.append(&1, Bytes.Bytes, List.reverse(&1, Bytes.Bytes, writes), rev_writes),
1234                  List.append(&1, ClientEvent, List.reverse(&1, ClientEvent, events), rev_events))))

Uses (17)

Used by (1)