0 | module System.UV.Raw.Req
 1 |
 2 | import System.UV.Raw.Callback
 3 | import System.UV.Raw.Loop
 4 | import System.UV.Raw.Pointer
 5 | import System.UV.Raw.Util
 6 |
 7 | %default total
 8 |
 9 | --------------------------------------------------------------------------------
10 | -- FFI
11 | --------------------------------------------------------------------------------
12 |
13 | %foreign (idris_uv "uv_cancel")
14 | prim__uv_cancel : Ptr Req -> PrimIO Int32
15 |
16 | %foreign (idris_uv "uv_req_get_data")
17 | prim__uv_req_get_data : Ptr Req -> PrimIO AnyPtr
18 |
19 | %foreign (idris_uv "uv_req_set_data")
20 | prim__uv_req_set_data : Ptr Req -> AnyPtr -> PrimIO ()
21 |
22 | --------------------------------------------------------------------------------
23 | -- API
24 | --------------------------------------------------------------------------------
25 |
26 | parameters {auto has : HasIO io}
27 |            {auto 0 prf : PCast t Req}
28 |
29 |   export %inline
30 |   uv_cancel : Ptr t -> io Int32
31 |   uv_cancel req = primIO $ prim__uv_cancel (castPtr req)
32 |
33 |   ||| Returns the data associated with a request.
34 |   export %inline
35 |   uv_req_get_data : Ptr t -> io AnyPtr
36 |   uv_req_get_data req = primIO $ prim__uv_req_get_data (castPtr req)
37 |
38 |   ||| Sets the data associated with a request.
39 |   export %inline
40 |   uv_req_set_data : Ptr t -> AnyPtr -> io ()
41 |   uv_req_set_data req dat = primIO $ prim__uv_req_set_data (castPtr req) dat
42 |
43 |   export
44 |   freeReq : Ptr t -> io ()
45 |   freeReq p = do
46 |     d <- uv_req_get_data p
47 |     unlockAnyPtr d
48 |     freePtr p
49 |