def transfer.action
bend-kit-stream@0.3.1.0 · stream.bend:92
import bend-kit-stream@0.3.1.0/stream.bend as Stream
import Base
92def transfer.action(~S: Type, ~D: Type,
93 ~write: D -> U32 -> Array<U32> -> Bool -> IO(D & Result<&1, &1, U32 & String, Unit>),
94 action: ReadAction, source: S, destination: D, count: U32, +len: U32,
95 words: Array<U32>, tls: Bool) -> IO(Transfer<S, D>):
96 match action:
97 case End{}:
98 IO.pure(Transfer<S, D>, Stop{source, destination, Complete{count}})
99 case Over{}:
100 IO.pure(Transfer<S, D>, Stop{source, destination, Failed{count, Limit{}}})
101 case Forward{}:
102 do IO<Transfer<S, D>>:
103 pair : D & Result<&1, &1, U32 & String, Unit> <- write(destination, len, words, tls)
104 return transfer.written(~S, ~D, source, count, len, pair)