0 | module System.UV.Pipe
2 | import Data.Buffer.Indexed
4 | import IO.Async.Event
5 | import System.UV.File
6 | import System.UV.Loop
7 | import System.UV.Pointer
8 | import System.UV.Stream
9 | import System.UV.Raw.Stream
10 | import System.UV.Util
11 | import System.UV.Raw.Handle
12 | import System.UV.Raw.Pipe
17 | (cc : CloseCB) => Resource (Ptr Pipe) where
18 | release h = uv_close h cc
20 | parameters {auto l : UVLoop}
21 | {auto has : Has UVError es}
24 | mkPipe : Bool -> Async es (Ptr Pipe)
25 | mkPipe b = mallocPtr Pipe >>= uvAct (\x => uv_pipe_init l.loop x b)
28 | pipeOpen : File -> Async es (Ptr Pipe)
31 | uv $
uv_pipe_open pp f.file
35 | stdinOpen : Async es (Ptr Pipe)
36 | stdinOpen = pipeOpen stdin
41 | -> (Buffer (ReadRes ByteString) -> Async es a)
43 | streamStdin ac run = use1 stdinOpen $
\h => read ac h run