Module Make.Expert

module Checked_out_entry : sig ... end

A spooled entry that is checked out, independent of any particular queue. No other process using this interface will be able to interfere with a Checked_out_entry.t (unlike an Entry.t, which may be stolen out from under you).

val checkout : Entry.t -> Checked_out_entry.t Async.Deferred.Or_error.t

Check out an Entry.t. Use checkout if you expect to be the only user of an Entry.t and it is an error if the Entry.t is grabbed by another process (or does not exist). See with_entry for a higher-level interface.

val checkout' : Entry.t -> [ `Not_found | `Ok of Checked_out_entry.t ] Async.Deferred.Or_error.t

Check out an Entry.t. Use checkout' if you expect that another process might race to grab an Entry.t. See with_entry' for a higher-level interface.

val list_checkouts_unsafe : spool -> Spoolable.Queue.t -> Checked_out_entry.t list Async.Deferred.Or_error.t

Get a hold of all currently checked out entries in the given queue. This operation breaks the invariant that each t has a single owner. It should only be used in cases where it is easy to reason about what processes are potentially manipulating the spool.

module Queue_reader : sig ... end