def recv.closed

bend-kit-websocket@0.4.0.0 · websocket.bend:1014

import bend-kit-websocket@0.4.0.0/websocket.bend as Websocket
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes

1014def recv.closed(r: Result<&1, &1, U32 & String, U32 & Bytes.Bytes>, sock: Socket, +tls: Bool, +server: Bool, rest: Bytes.Cursor, partial: Partial, +max: U32, closing: Bool) -> IO(Conn & Result<&1, &1, U32 & String, Incoming>):
1015  match r:
1016    case Fail{e}:
1017      recv.fail(sock, tls, server, max, e)
1018    case Done{(+code, reason)}:
1019      match closing:
1020        case True{}:
1021          recv.out(sock, tls, server, rest, partial, max, True{}, Done{Closed{code, reason}})
1022        case False{}:
1023          echo = Bool.pick(Bytes.Bytes, U32.is_eq(code, 1005), Bytes.new(0), close.payload(code, Bytes.new(0)))
1024          do IO<Conn & Result<&1, &1, U32 & String, Incoming>>:
1025            s : Socket & Result<&1, &1, U32 & String, Unit> <- raw(server, sock, tls, True{}, 8, echo)
1026            recv.echoed(s, tls, server, rest, partial, max, code, reason)

Uses (23)

Used by (1)