Module Uwt.Handle

module Handle: sig .. end

Uwt.Handle.t is the base type for all libuv handle types.

type t 
val close : t -> Int_result.unit

Handles are closed automatically, if they are not longer referenced from the OCaml heap. Nevertheless, you should nearly always close them with Uwt.Handle.close, because:

However, it's safe to write code in this manner:

        let s = Uwt.Tcp.init () in
        let c = Uwt.Tcp.init () in
        Uwt.Tcp.nodelay s false;
        Uwt.Tcp.simultaneous_accepts true;
        if foobar () then (* no file descriptor yet assigned, no need to worry
                             about exceptions inside foobar,... *)
          Lwt.return_unit (* no need to close *)
        else
          ...
      

If you want - for whatever reason - keep a file descriptor open for the whole lifetime of your process, remember to keep a reference to its handle.

val close_noerr : t -> unit
val close_wait : t -> unit Lwt.t

Prefer Uwt.Handle.close or Uwt.Handle.close_noerr to Uwt.Handle.close_wait. Uwt.Handle.close or Uwt.Handle.close_noerr return immediately (there are no useful error messages, beside perhaps a notice, that you've already closed that handle).

Uwt.Handle.close_wait is only useful, if you intend to wait until all concurrent write and read threads related to this handle are canceled.

val is_active : t -> bool

Returns non-zero if the handle is active, zero if it's inactive. What "active" means depends on the type of handle:

Rule of thumb: if a handle of type Uwt.Foo.t has a uv_foo_start() function, then it's active from the moment that function is called. Likewise, uv_foo_stop() deactivates the handle again.

val ref' : t -> unit

Reference the given handle. References are idempotent, that is, if a handle is already referenced calling this function again will have no effect.

val unref : t -> unit

Un-reference the given handle. References are idempotent, that is, if a handle is not referenced calling this function again will have no effect.

val has_ref : t -> bool

Returns non-zero if the handle is referenced, zero otherwise.