def close

bend-kit-camber@0.15.0.1 · camber.bend:445

import bend-kit-camber@0.15.0.1/camber.bend as Camber
import Base

445# Stop external admissions before close. Busy preserves live context/capacity;
446# retry after admitted operations finish. Stalled operations remain observable.
447def close(-R: Type, -P: Data, -I: Data, -E: Data, -O: Data, owner: Owner<R, P, I, E, O>) -> IO(OwnerClose<R, P, I, E, O>):
448  Owner{Context{+messages}, finished} = owner
449  do IO<OwnerClose<R, P, I, E, O>>:
450    channel : Chan(CloseResult) <- Chan.new(CloseResult, 1)
451    +reply : Chan(CloseResult) = channel
452    sent : Result<&1, &1, Message<R, P, I, E, O>, Unit> <- Chan.send(Message<R, P, I, E, O>, messages, Shutdown{reply})
453    result : CloseResult <- close.sent(Message<R, P, I, E, O>, sent, reply)
454    close.completed(R, P, I, E, O, result, Owner{Context{messages}, finished})

Uses (14)

Used by (2)