0 | module System.UV.Raw.Handle
2 | import System.UV.Raw.Callback
3 | import System.UV.Raw.Loop
4 | import System.UV.Raw.Pointer
5 | import System.UV.Raw.Util
13 | %foreign (idris_uv "uv_is_active")
14 | prim__uv_is_active : Ptr Handle -> PrimIO Int32
16 | %foreign (idris_uv "uv_is_closing")
17 | prim__uv_is_closing : Ptr Handle -> PrimIO Int32
19 | %foreign (idris_uv "uv_close")
20 | prim__uv_close : Ptr Handle -> AnyPtr -> PrimIO ()
22 | %foreign (idris_uv "uv_ref")
23 | prim__uv_ref : Ptr Handle -> PrimIO ()
25 | %foreign (idris_uv "uv_unref")
26 | prim__uv_unref : Ptr Handle -> PrimIO ()
28 | %foreign (idris_uv "uv_has_ref")
29 | prim__uv_has_ref : Ptr Handle -> PrimIO Int
31 | %foreign (idris_uv "uv_handle_get_data")
32 | prim__uv_handle_get_data : Ptr Handle -> PrimIO AnyPtr
34 | %foreign (idris_uv "uv_handle_set_data")
35 | prim__uv_handle_set_data : Ptr Handle -> AnyPtr -> PrimIO ()
37 | %foreign (idris_uv "uv_handle_type")
38 | prim__uv_handle_type : Ptr Handle -> PrimIO Int
41 | export %foreign (idris_uv "uv_handle_type_name")
42 | uv_handle_type_name : Int -> String
49 | record CloseCB where
55 | freeCloseCB : HasIO io => CloseCB -> io ()
56 | freeCloseCB (CC p) = unlockAnyPtr p
58 | parameters {auto has : HasIO io}
59 | {auto 0 prf : PCast t Handle}
62 | uv_is_active : Ptr t -> io Int32
63 | uv_is_active p = primIO (prim__uv_is_active $
castPtr p)
66 | uv_is_closing : Ptr t -> io Int32
67 | uv_is_closing p = primIO (prim__uv_is_closing $
castPtr p)
75 | uv_close : Ptr t -> CloseCB -> io ()
76 | uv_close p cb = primIO $
prim__uv_close (castPtr p) cb.ptr
83 | uv_ref : Ptr t -> io ()
84 | uv_ref p = primIO $
prim__uv_ref (castPtr p)
91 | uv_unref : Ptr t -> io ()
92 | uv_unref p = primIO $
prim__uv_unref (castPtr p)
96 | uv_has_ref : Ptr t -> io Bool
97 | uv_has_ref p = intToBool <$> primIO (prim__uv_has_ref $
castPtr p)
101 | uv_handle_get_data : Ptr t -> io AnyPtr
102 | uv_handle_get_data p = primIO $
prim__uv_handle_get_data (castPtr p)
106 | uv_handle_set_data : Ptr t -> AnyPtr -> io ()
107 | uv_handle_set_data p ap = primIO $
prim__uv_handle_set_data (castPtr p) ap
111 | uv_handle_type : Ptr t -> io Int
112 | uv_handle_type p = primIO $
prim__uv_handle_type (castPtr p)
115 | freeHandle : Ptr t -> io ()
117 | d <- uv_handle_get_data p
122 | freeHandleWithoutUnlocking : Ptr t -> io ()
123 | freeHandleWithoutUnlocking = freePtr
130 | closeCB : HasIO io => (handler : Ptr Handle -> IO ()) -> io (CloseCB)
131 | closeCB f = map CC $
ptrCB (\x => f x >> freeHandle x)
134 | defaultClose : HasIO io => io CloseCB
135 | defaultClose = closeCB $
\_ => pure ()
138 | closeWithoutUnlockingCB : HasIO io => io (CloseCB)
139 | closeWithoutUnlockingCB = map CC $
ptrCB (\x => freeHandleWithoutUnlocking {t = Handle} x)