cmUVHandlePtr: Add uv_idle_ptr::{start,stop} methods

These were missing w.r.t. the pattern established for other handle wrappers.
This commit is contained in:
Brad King
2023-11-20 15:52:53 -05:00
parent 9dd14b2946
commit fb7ee82271
3 changed files with 28 additions and 1 deletions

View File

@@ -266,6 +266,18 @@ int uv_idle_ptr::init(uv_loop_t& loop, void* data)
return uv_idle_init(&loop, *this);
}
int uv_idle_ptr::start(uv_idle_cb cb)
{
assert(this->handle);
return uv_idle_start(*this, cb);
}
void uv_idle_ptr::stop()
{
assert(this->handle);
uv_idle_stop(*this);
}
template class uv_handle_ptr_base_<uv_handle_t>;
#define UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(NAME) \

View File

@@ -201,6 +201,10 @@ struct uv_idle_ptr : public uv_handle_ptr_<uv_idle_t>
CM_INHERIT_CTOR(uv_idle_ptr, uv_handle_ptr_, <uv_idle_t>);
int init(uv_loop_t& loop, void* data = nullptr);
int start(uv_idle_cb cb);
void stop();
};
struct uv_signal_ptr : public uv_handle_ptr_<uv_signal_t>

View File

@@ -19,7 +19,7 @@ static bool testIdle()
cm::uv_idle_ptr idle;
idle.init(*loop, &idled);
uv_idle_start(idle, cb);
idle.start(cb);
uv_run(loop, UV_RUN_DEFAULT);
if (!idled) {
@@ -27,6 +27,17 @@ static bool testIdle()
return false;
}
idled = false;
idle.start(cb);
idle.stop();
uv_run(loop, UV_RUN_DEFAULT);
if (idled) {
std::cerr << "uv_idle_ptr::stop did not stop callback" << std::endl;
return false;
}
return true;
}