def work.return

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

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

136def work.return(~R: Type, ~P: Data, ~I: Data, ~E: Data, ~O: Data,
137  ~destroy: R -> IO(Unit),
138  messages: Chan(Message<R, P, I, E, O>), reply: Chan(Outcome<E, O>),
139  result: R & Result<&2, &2, E, O>
140) -> IO(Unit):
141  (returned, outcome) = result
142  do IO<Unit>:
143    accepted : Result<&1, &1, Message<R, P, I, E, O>, Unit> <- Chan.send(Message<R, P, I, E, O>, messages, Returned{returned})
144    work.returned(~R, ~P, ~I, ~E, ~O, ~destroy, accepted)
145    sent : Result<&1, &1, Outcome<E, O>, Unit> <- Chan.send(Outcome<E, O>, reply, outcome.value(E, O, outcome))
146    return Unit{}

Uses (13)

Used by (1)