///|
type Loop Bytes
///|
extern "c" fn uv_loop_make() -> Loop = "moonbit_uv_loop_make"
///|
extern "c" fn uv_loop_init(loop_ : Loop) -> Int = "moonbit_uv_loop_init"
///|
pub fn Loop::new() -> Loop raise Errno {
let loop_ = uv_loop_make()
let status = uv_loop_init(loop_)
if status < 0 {
raise Errno::of_int(status)
}
return loop_
}
///|
extern "c" fn uv_loop_close(loop_ : Loop) -> Int = "moonbit_uv_loop_close"
///|
pub fn Loop::close(self : Loop) -> Unit raise Errno {
let status = uv_loop_close(self)
if status < 0 {
raise Errno::of_int(status)
}
}
///|
pub(all) enum RunMode {
Default = 0
Once = 1
NoWait = 2
}
///|
extern "c" fn uv_run(uv : Loop, mode : RunMode) -> Int = "moonbit_uv_run"
///|
pub fn Loop::run(self : Loop, mode : RunMode) -> Unit raise Errno {
let status = uv_run(self, mode)
if status < 0 {
raise Errno::of_int(status)
}
}
///|
extern "c" fn uv_stop(loop_ : Loop) = "moonbit_uv_stop"
///|
pub fn Loop::stop(self : Loop) -> Unit {
uv_stop(self)
}
///|
extern "c" fn uv_walk(loop_ : Loop, walk_cb : (Handle) -> Unit) = "moonbit_uv_walk"
///|
pub fn Loop::walk(self : Loop, walk_cb : (Handle) -> Unit) -> Unit {
uv_walk(self, walk_cb)
}
///|
extern "c" fn uv_loop_alive(loop_ : Loop) -> Int = "moonbit_uv_loop_alive"
///|
pub fn Loop::alive(loop_ : Loop) -> Bool {
return uv_loop_alive(loop_) != 0
}