Mavryk_webassembly_interpreter.Output_bufferThis module implements a bounded FIFO queue to model the outputs. Each element of the queue is a list of outbox messages produced on this level.
module Messages = Mavryk_lazy_containers.Lazy_vector.Mutable.ZVectormodule Outboxes = Mavryk_lazy_containers.Lazy_map.Mutable.LwtInt32Maptype t = {outboxes : bytes Messages.t Outboxes.t;mutable last_level : int32 option;validity_period : int32;message_limit : Z.t;Limit of messages per outbox
*)}val alloc :
validity_period:int32 ->
message_limit:Z.t ->
last_level:int32 option ->
talloc ~validity_period ~last_level allocates a new output_buffer. If last_level is Some level, the corresponding outbox is allocated.
val is_initialized : t -> boolis_initialized buffer returns true if the output buffer has been initialized.
val initialize_outbox : t -> int32 -> unitinitialize_outbox buffer level initialize the output_buffer with a fresh inbox at the given level.
val move_outbox_forward : t -> unitmove_outbox_forward outboxes increments the last level of the outbox, allocates a new outbox and removes the outbox at the previous first level, according to the validity period.
val push_message : t -> bytes -> output_info Lwt.tpush_message outboxes msg push a new message in the last outbox, and returns the its level and index in the outbox.
val get_outbox : t -> int32 -> bytes Messages.Vector.t Lwt.tget_outbox outboxes level returns the outbox for the given level.
val get_message : t -> output_info -> bytes Lwt.tget_message outboxes message_info finds a message in the output buffer.
sandbox outboxes create a snapshot of the outbox. You can modify original one, snapshotted one will stay untouched.
module Internal_for_tests : sig ... end