From dd700e9bfb2a498632845e76ce95dd38bb866a7b Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 30 Nov 2017 11:19:04 -0500 Subject: cmUVHandlePtr: Add uv_timer_ptr --- Source/cmUVHandlePtr.cxx | 14 ++++++++++++++ Source/cmUVHandlePtr.h | 12 ++++++++++++ Tests/CMakeLib/testUVRAII.cxx | 1 + 3 files changed, 27 insertions(+) diff --git a/Source/cmUVHandlePtr.cxx b/Source/cmUVHandlePtr.cxx index 8ba93e5..78819a5 100644 --- a/Source/cmUVHandlePtr.cxx +++ b/Source/cmUVHandlePtr.cxx @@ -172,6 +172,18 @@ uv_pipe_ptr::operator uv_stream_t*() const } #ifdef CMAKE_BUILD_WITH_CMAKE +int uv_timer_ptr::init(uv_loop_t& loop, void* data) +{ + allocate(data); + return uv_timer_init(&loop, *this); +} + +int uv_timer_ptr::start(uv_timer_cb cb, uint64_t timeout, uint64_t repeat) +{ + assert(handle); + return uv_timer_start(*this, cb, timeout, repeat); +} + uv_tty_ptr::operator uv_stream_t*() const { return reinterpret_cast(handle.get()); @@ -199,6 +211,8 @@ UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(stream) #ifdef CMAKE_BUILD_WITH_CMAKE UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(async) +UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(timer) + UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(tty) #endif } diff --git a/Source/cmUVHandlePtr.h b/Source/cmUVHandlePtr.h index a251c5f..d3df69c 100644 --- a/Source/cmUVHandlePtr.h +++ b/Source/cmUVHandlePtr.h @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -164,6 +165,15 @@ struct uv_pipe_ptr : public uv_handle_ptr_ int init(uv_loop_t& loop, int ipc, void* data = nullptr); }; +struct uv_timer_ptr : public uv_handle_ptr_ +{ + CM_PERFECT_FWD_CTOR(uv_timer_ptr, uv_handle_ptr_); + + int init(uv_loop_t& loop, void* data = nullptr); + + int start(uv_timer_cb cb, uint64_t timeout, uint64_t repeat); +}; + struct uv_tty_ptr : public uv_handle_ptr_ { CM_PERFECT_FWD_CTOR(uv_tty_ptr, uv_handle_ptr_); @@ -192,6 +202,8 @@ UV_HANDLE_PTR_INSTANTIATE_EXTERN(pipe) UV_HANDLE_PTR_INSTANTIATE_EXTERN(stream) +UV_HANDLE_PTR_INSTANTIATE_EXTERN(timer) + UV_HANDLE_PTR_INSTANTIATE_EXTERN(tty) #undef UV_HANDLE_PTR_INSTANTIATE_EXTERN diff --git a/Tests/CMakeLib/testUVRAII.cxx b/Tests/CMakeLib/testUVRAII.cxx index 7ecef39..bb3493f 100644 --- a/Tests/CMakeLib/testUVRAII.cxx +++ b/Tests/CMakeLib/testUVRAII.cxx @@ -155,6 +155,7 @@ static bool testAllMoves() struct allTypes { uv_stream_ptr _7; + uv_timer_ptr _8; uv_tty_ptr _9; uv_pipe_ptr _12; uv_async_ptr _13; -- cgit v0.12