Library
Module
Module type
Parameter
Class
Class type
These functions are somewhat unsafe, since they don't enforce lifetime by passing a new switch as an argument to the user. They are nevertheless useful for applications which haven't been switch to the EIO-style resource handling discipline, esp. when dealing with connection pools. The caqti-eio
package uses Eio.Switch
which lacks these functions.
val eternal : t
A switch which is never released.
val create : unit -> t
Create a fresh releasable switch which is initially on.
val release : t -> unit Lwt.t
release sw
calls all cleanup handlers on sw
in reverse order of registration and marks the switch as being off.
val run : (t -> 'a Lwt.t) -> 'a Lwt.t
run f
calls f
with a fresh switch which will be released upon exit or in case of failure.
val check : t -> unit
check sw
raises Off
if sw
has been turned off.
on_release_cancellable sw f
registers f
to be called upon the evetual release of sw
unless remove_hook
is called on the returned hook before that happen.
val remove_hook : hook -> unit
Given a hook
returned by on_release_cancellable
, remove_hook hook
cancels the cleanup registered by that call.