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)

Uses (15)

Used by (1)