def client_stream

bendonnect-rpc@0.1.0.0 · src/transport/rpc.bend:173

import bendonnect-rpc@0.1.0.0/src/transport/rpc.bend as Rpc
import Base
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
import bendonnect-rpc@0.1.0.0/src/error.bend as E
import bendonnect-rpc@0.1.0.0/src/protocol.bend as P
import bendonnect-rpc@0.1.0.0/src/transport/server.bend as Srv

173# Serves a client-streaming method: all request messages are decoded first (the transport buffers
174# them), impl answers with the single response.
175def client_stream(~Req: Data, ~Res: Data, ~dec: @+codec: P.Codec -> Bytes.Bytes -> Result<&1, &1, E.Error, Req>, ~enc: @+codec: P.Codec -> Res -> Bytes.Bytes, ~impl: Ctx -> List<&2, Req> -> IO(Result<&1, &1, E.Error, Res>), call: Srv.Call) -> IO(Srv.Reply):
176  Srv.Call{procedure, kind, +codec, headers, timeout_ms, messages} = call
177  match codec:
178    case P.Custom{name}:
179      reply_io(no_custom(name))
180    case P.Json{}:
181      cs.run(~Req, ~Res, ~enc, ~impl, Ctx{procedure, P.Json{}, headers}, P.Json{}, dec_all(~Req, ~dec, P.Json{}, messages))
182    case P.Proto{}:
183      cs.run(~Req, ~Res, ~enc, ~impl, Ctx{procedure, P.Proto{}, headers}, P.Proto{}, dec_all(~Req, ~dec, P.Proto{}, messages))

Uses (13)

Used by (0)

No other definition uses this definition.