def transfer.read
bend-kit-stream@0.3.1.0 · stream.bend:106
import bend-kit-stream@0.3.1.0/stream.bend as Stream
import Base
106def transfer.read(~S: Type, ~D: Type,
107 ~write: D -> U32 -> Array<U32> -> Bool -> IO(D & Result<&1, &1, U32 & String, Unit>),
108 pair: S & Result<&1, &1, U32 & String, U32 & Array<U32>>,
109 destination: D, count: U32, remaining: U32, tls: Bool) -> IO(Transfer<S, D>):
110 (source, result) = pair
111 match result:
112 case Fail{(code, message)}:
113 IO.pure(Transfer<S, D>, Stop{source, destination, Failed{count, Read{code, message}}})
114 case Done{(+len, words)}:
115 transfer.action(~S, ~D, ~write, read.action(len, remaining),
116 source, destination, count, len, words, tls)