Skip to content
  • jdavidberger's avatar
    Add RAII handles for libuv handle types · a3abb85c
    jdavidberger authored and Brad King's avatar Brad King committed
    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.
    a3abb85c