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))))