def unary
import bendonnect-rpc@0.1.0.0/src/transport/rpc.bend as Rpcimport 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
88# Serves a unary method: decode the single request message, run impl, encode the response.
89# A decode error (already an E.Error from the generated decoder) is returned as is.
90def unary(~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 -> Req -> IO(Result<&1, &1, E.Error, Res>), call: Srv.Call) -> IO(Srv.Reply):
91 Srv.Call{procedure, kind, +codec, headers, timeout_ms, messages} = call
92 match codec:
93 case P.Custom{name}:
94 reply_io(no_custom(name))
95 case P.Json{}:
96 unary.one(~Req, ~Res, ~dec, ~enc, ~impl, Ctx{procedure, P.Json{}, headers}, P.Json{}, messages)
97 case P.Proto{}:
98 unary.one(~Req, ~Res, ~dec, ~enc, ~impl, Ctx{procedure, P.Proto{}, headers}, P.Proto{}, messages)
Uses (11)
Used by (0)
No other definition uses this definition.