0 | module System.UV.Raw.Async
 1 |
 2 | import System.UV.Raw.Callback
 3 | import System.UV.Raw.Handle
 4 | import System.UV.Raw.Loop
 5 | import System.UV.Raw.Pointer
 6 | import System.UV.Raw.Util
 7 |
 8 | %default total
 9 |
10 | --------------------------------------------------------------------------------
11 | -- FFI
12 | --------------------------------------------------------------------------------
13 |
14 | %foreign (idris_uv "uv_async_init")
15 | prim__uv_async_init : Ptr Loop -> Ptr Async -> AnyPtr -> PrimIO Int32
16 |
17 | %foreign (idris_uv "uv_async_send")
18 | prim__uv_async_send : Ptr Async -> PrimIO Int32
19 |
20 | --------------------------------------------------------------------------------
21 | -- API
22 | --------------------------------------------------------------------------------
23 |
24 | parameters {auto has : HasIO io}
25 |   export
26 |   uv_async_init : Ptr Loop -> Ptr Async -> (Ptr Async -> IO ()) -> io Int32
27 |   uv_async_init l h f = do
28 |     cb <- ptrCB f
29 |     uv_handle_set_data h cb
30 |     primIO $ prim__uv_async_init l h cb
31 |
32 |   export %inline
33 |   uv_async_send : Ptr Async -> io Int32
34 |   uv_async_send p = primIO $ prim__uv_async_send p
35 |