def unary

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

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

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.