def stdin_pump
cswap-bend-cli@0.1.0.0 · server.bend:66
import cswap-bend-cli@0.1.0.0/server.bend as Server
import Base
import cswap-bend-cli@0.1.0.0/fs.bend as Fs
import cswap-bend-cli@0.1.0.0/frame.bend as Fr
import cswap-bend-cli@0.1.0.0/rpc.bend as Rpc
import cswap-bend-cli@0.1.0.0/fmt/out.bend as O
66@unsafe def stdin_pump(p: SP, +fmt: O.Fmt) -> IO(Unit):
67 match p:
68 case SRead{f, buf}:
69 IO.bind(File & Fs.Res(String), Unit, File.read(f, chunk()), r => stdin_pump(after_read(r, buf), fmt))
70 case SFrames{f, +buf}:
71 stdin_pump(s_cut(Fr.take(Rpc.is_block(fmt), buf), f, buf), fmt)
72 case SHandle{f, msg, rest}:
73 IO.bind(String, Unit, Rpc.handle(fmt, msg), resp => IO.bind(Unit, Unit, IO.write(resp), u => stdin_pump(SFrames{f, rest}, fmt)))
74 case STail{f, +buf}:
75 stdin_pump(s_tail(Fr.blank(buf), f, buf), fmt)
76 case SDone{f}:
77 File.close(f)