package shared-block-ring
Library
Module
Module type
Parameter
Class
Class type
include S.RING with type disk := B.t with type item = Item.t
type item = Item.t
type 'a result = ('a, error) Result.result
val pp_error : Format.formatter -> error -> unit
val open_error : 'a result -> ('a, [> error ]) Result.result
val error_to_msg : 'a result -> ('a, S.msg) Result.result
attach queue client blockdevice
attaches to a previously-created shared ring on top of blockdevice
.
detach t
frees all resources associated with t
. Attempts to use t
after a detach will result in an `Error _
state t ()
queries the current state of the ring. If the result is `Suspended then the producer has acknowledged and will nolonger produce items. Clients which support suspend/resume should arrange to call this function periodically.
debug_info t
returns a list of key=value pairs which may be useful for debugging. Nothing should be assumed about the keys or the values; they should only be printed or logged.
val sexp_of_position : position -> Sexplib0.Sexp.t
include S.COMPARABLE with type t := position
create blockdevice
initialises a shared ring on top of blockdevice
where we will be able to push
variable-sized items.
push t item
pushes item
onto the ring t
but doesn't expose it to the Consumer. `Ok position
means the update has been safely written to the block device and can be exposed to the Consumer by calling advance position
. `Error message
indicates some fatal software bug: the message should be logged and the process shutdown. `Suspend
means that the consumer has requested that no more items be pushed onto the queue temporarily `Retry
means that the item should fit but there is temporarily not enough space in the ring. The client should retry later.