0 | module Node.Stream.Writeable
3 | import Node.Event.Internal
4 | import Node.Stream.Readable
6 | %foreign nodeOn0 "close"
7 | ffi_onClose : a -> PrimIO () -> PrimIO ()
10 | unsafeWriteableOnClose : HasIO io => a -> IO () -> io ()
11 | unsafeWriteableOnClose = on0 ffi_onClose
13 | %foreign nodeOn0 "drain"
14 | ffi_onDrain : a -> PrimIO () -> PrimIO ()
17 | unsafeWriteableOnDrain : HasIO io => a -> IO () -> io ()
18 | unsafeWriteableOnDrain = on0 ffi_onDrain
20 | %foreign nodeOn1 "error"
21 | ffi_onError : a -> (e -> PrimIO ()) -> PrimIO ()
24 | unsafeWriteableOnError : HasIO io => a -> (e -> IO ()) -> io ()
25 | unsafeWriteableOnError = on1 ffi_onError
27 | %foreign nodeOn0 "finish"
28 | ffi_onFinish : a -> PrimIO () -> PrimIO ()
31 | unsafeWriteableOnFinish : HasIO io => a -> IO () -> io ()
32 | unsafeWriteableOnFinish = on0 ffi_onFinish
34 | %foreign nodeOn1 "pipe"
35 | ffi_onPipe : a -> (r -> PrimIO ()) -> PrimIO ()
38 | unsafeWriteableOnPipe : HasIO io => ReadableClass d e r => a -> (r -> IO ()) -> io ()
39 | unsafeWriteableOnPipe = on1 ffi_onPipe
41 | %foreign nodeOn1 "unpipe"
42 | ffi_onUnpipe : a -> (r -> PrimIO ()) -> PrimIO ()
45 | unsafeWriteableOnUnpipe : HasIO io => ReadableClass d e r => a -> (r -> IO ()) -> io ()
46 | unsafeWriteableOnUnpipe = on1 ffi_onUnpipe
48 | %foreign "node:lambda: (tya, writeable) => writeable.cork()"
49 | ffi_cork : a -> PrimIO ()
52 | unsafeWriteableCork : HasIO io => a -> io ()
53 | unsafeWriteableCork a = primIO $
ffi_cork a
55 | %foreign "node:lambda: (tya, writeable, callback) => writeable.end(callback)"
56 | ffi_end : a -> PrimIO () -> PrimIO ()
59 | unsafeWriteableEnd : HasIO io => a -> IO () -> io ()
60 | unsafeWriteableEnd = on0 ffi_end
62 | %foreign "node:lambda: (tya, tyb, writeable, data, callback) => writeable.write(data, callback)"
63 | ffi_write : a -> b -> PrimIO () -> PrimIO ()
66 | unsafeWriteableWrite : HasIO io => a -> b -> IO () -> io ()
67 | unsafeWriteableWrite a b cb = primIO $
ffi_write a b $
toPrim cb
69 | %foreign "node:lambda: (tya, writeable) => writeable.uncork()"
70 | ffi_uncork : a -> PrimIO ()
73 | unsafeWriteableUncork : HasIO io => a -> io ()
74 | unsafeWriteableUncork a = primIO $
ffi_uncork a
78 | interface WriteableClass d e w | w where
79 | (.onClose) : HasIO io => w -> IO () -> io ()
80 | (.onClose) = unsafeWriteableOnClose
81 | (.onDrain) : HasIO io => w -> IO () -> io ()
82 | (.onDrain) = unsafeWriteableOnDrain
83 | (.onError) : HasIO io => w -> (e -> IO ()) -> io ()
84 | (.onError) = unsafeWriteableOnError
85 | (.onFinish) : HasIO io => w -> IO () -> io ()
86 | (.onFinish) = unsafeWriteableOnFinish
87 | (.onPipe) : HasIO io => ReadableClass d e r => w -> (r -> IO ()) -> io ()
88 | (.onPipe) = unsafeWriteableOnPipe
89 | (.onUnpipe) : HasIO io => ReadableClass d e r => w -> (r -> IO ()) -> io ()
90 | (.onUnpipe) = unsafeWriteableOnUnpipe
91 | (.cork) : HasIO io => w -> io ()
92 | (.cork) = unsafeWriteableCork
93 | (.end) : HasIO io => w -> Maybe (IO ()) -> io ()
94 | (.end) w cb = unsafeWriteableEnd w $
fromMaybe (pure ()) cb
95 | (.write) : HasIO io => w -> d -> Maybe (IO ()) -> io ()
96 | (.write) w d cb = unsafeWriteableWrite w d $
fromMaybe (pure ()) cb
97 | (.uncork) : HasIO io => w -> io ()
98 | (.uncork) = unsafeWriteableUncork