diff options
author | Brad King <brad.king@kitware.com> | 2017-11-30 11:19:04 -0500 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-11-30 13:26:35 -0500 |
commit | dd700e9bfb2a498632845e76ce95dd38bb866a7b (patch) | |
tree | 79fb14a5c887417275b704e9175a22af56517cc7 | |
parent | 32cfa7b324de799eefb2f7370fb54b700d1a87a5 (diff) | |
download | cmake-dd700e9bfb2a498632845e76ce95dd38bb866a7b.tar.gz |
cmUVHandlePtr: Add uv_timer_ptr
-rw-r--r-- | Source/cmUVHandlePtr.cxx | 14 | ||||
-rw-r--r-- | Source/cmUVHandlePtr.h | 12 | ||||
-rw-r--r-- | Tests/CMakeLib/testUVRAII.cxx | 1 |
3 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmUVHandlePtr.cxx b/Source/cmUVHandlePtr.cxx index 8ba93e5241..78819a5721 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<uv_stream_t*>(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 a251c5f54a..d3df69cd2d 100644 --- a/Source/cmUVHandlePtr.h +++ b/Source/cmUVHandlePtr.h @@ -5,6 +5,7 @@ #include <algorithm> #include <cstddef> +#include <cstdint> #include <memory> #include <type_traits> @@ -164,6 +165,15 @@ struct uv_pipe_ptr : public uv_handle_ptr_<uv_pipe_t> int init(uv_loop_t& loop, int ipc, void* data = nullptr); }; +struct uv_timer_ptr : public uv_handle_ptr_<uv_timer_t> +{ + CM_PERFECT_FWD_CTOR(uv_timer_ptr, uv_handle_ptr_<uv_timer_t>); + + 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_<uv_tty_t> { CM_PERFECT_FWD_CTOR(uv_tty_ptr, uv_handle_ptr_<uv_tty_t>); @@ -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 7ecef3960c..bb3493f3ea 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; |