0 | module System.UV.Raw.Loop
 1 |
 2 | import System.UV.Raw.Pointer
 3 | import System.UV.Raw.Util
 4 |
 5 | import public System.UV.Data.RunMode
 6 |
 7 | %default total
 8 |
 9 | --------------------------------------------------------------------------------
10 | -- FFI
11 | --------------------------------------------------------------------------------
12 |
13 | %foreign (idris_uv "uv_default_loop")
14 | prim__uv_default_loop : PrimIO (Ptr Loop)
15 |
16 | %foreign (idris_uv "uv_loop_init")
17 | prim__uv_loop_init : Ptr Loop -> PrimIO Int32
18 |
19 | %foreign (idris_uv "uv_loop_close")
20 | prim__uv_loop_close : Ptr Loop -> PrimIO Int32
21 |
22 | %foreign (idris_uv "uv_stop")
23 | prim__uv_stop : Ptr Loop -> PrimIO ()
24 |
25 | %foreign (idris_uv "uv_loop_alive")
26 | prim__uv_loop_alive : Ptr Loop -> PrimIO Int32
27 |
28 | covering %foreign (idris_uv "uv_run")
29 | prim__uv_run : Ptr Loop -> Bits32 -> PrimIO Int32
30 |
31 | --------------------------------------------------------------------------------
32 | -- API
33 | --------------------------------------------------------------------------------
34 |
35 | parameters {auto has : HasIO io}
36 |
37 |   export %inline
38 |   uv_default_loop : io (Ptr Loop)
39 |   uv_default_loop = primIO prim__uv_default_loop
40 |
41 |   export %inline covering
42 |   uv_run : Ptr Loop -> Bits32 -> io Int32
43 |   uv_run p b = primIO $ prim__uv_run p b
44 |
45 |   export %inline covering
46 |   uv_loop_init : Ptr Loop -> io Int32
47 |   uv_loop_init p = primIO $ prim__uv_loop_init p
48 |
49 |   export %inline
50 |   uv_loop_close : Ptr Loop -> io Int32
51 |   uv_loop_close p = primIO $ prim__uv_loop_close p
52 |
53 |   export %inline
54 |   uv_stop : Ptr Loop -> io ()
55 |   uv_stop p = primIO $ prim__uv_stop p
56 |
57 |   export %inline
58 |   uv_loop_alive : Ptr Loop -> io Bool
59 |   uv_loop_alive p = int32ToBool <$> primIO (prim__uv_loop_alive p)
60 |