Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
The back-end of the shared ring, which reads requests and writes responses to the remote domain.
Type of a backend. 'a is the response type, and 'b is the request id type (e.g. int or int64).
init ~sring
is an initialized backend attached to shared ring sring
.
val slot : ('a, 'b) t -> int -> Cstruct.t
slot backend idx
retrieves the request/response slot at idx
as an Cstruct.t. idx
should be less than nr_ents
.
val nr_ents : ('a, 'b) t -> int
nr_ents backend
is the number of slots in the underlying shared ring.
val next_res_id : ('a, 'b) t -> int
next_res_id backend
advances the response producer and return the latest slot id.
val push_responses : ('a, 'b) t -> unit
push_responses backend
updates the shared response producer.
val push_responses_and_check_notify : ('a, 'b) t -> bool
push_responses_and_check_notify backend
updates the shared response producer, and returns true
if an event notification is required to wake up the remote domain.
val more_to_do : ('a, 'b) t -> bool
more_to_do backend
returns true
if there are outstanding requests on the ring which we should immediately process without waiting for an event notification.
val ack_requests : ('a, 'b) t -> (Cstruct.t -> unit) -> unit
ack_requests t fn
applies fn slot
to each slot
containing a new request.
val to_string : ('a, 'b) t -> string
to_string backend
pretty-prints the ring metadata.