summaryrefslogtreecommitdiffstats
path: root/Source/cmUVHandlePtr.h
Commit message (Collapse)AuthorAgeFilesLines
* cmUVHandlePtr: Add uv_process_ptrBrad King2017-11-301-0/+10
|
* cmUVHandlePtr: Add uv_timer_ptrBrad King2017-11-301-0/+12
|
* Add RAII handles for libuv handle typesJustin Berger2017-11-291-0/+200
The `uv_*_t` handle types are closed by `uv_close`, but the semantics are tricky. Calling `uv_close` may not close immediately. Instead it hands ownership to the uv loop to which the handle is currently attached. When the loop decides to close it, a callback is used to allow the `uv_close` caller to free resources. Provide an abstraction layer as `cm::uv_*_ptr` types corresponding to the `uv_*_t` handle types. Each pointer is either empty (`nullptr`) or has an initialized handle attached to a loop. Use move semantics to ensure a single owner of the handle so that clients can predict when the handle is destroyed.