Module Make.Ao

type t
val end_off : t -> Optint.Int63.t

end_off t returns the largest virtual offset contained in the sparse file t. Attempting to append with a strictly smaller virtual offset will fail.

val mapping_size : t -> Optint.Int63.t

end_off t returns the current size of the mapping file associated to the sparse file t including additions not yet flushed to the file system. It can be passed to open_ao as mapping_size when opening the file again.

val create : mapping:string -> data:string -> (t, [> Io.create_error ]) Stdlib.result

create ~mapping ~data initializes a new empty sparse file, represented on disk by two files named mapping and data.

val open_ao : mapping_size:Optint.Int63.t -> mapping:string -> data:string -> (t, [> Io.open_error | `Closed | `Invalid_argument | `Read_out_of_bounds | `Inconsistent_store ]) Stdlib.result

open_ao ~mapping_size ~mapping ~data returns an append-only instance of the sparse file.

val append_seq_exn : t -> off:Optint.Int63.t -> string Irmin.Export_for_backends.Seq.t -> unit

append_seq_exn t ~off seq appends the sequence of strings seq to the sparse file t, at the virtual offset off which must be larger than the previously appended offsets.

val flush : t -> (unit, [> Io.write_error ]) Stdlib.result

Flush the append buffer. Does not call fsync.

val close : t -> (unit, [> Io.close_error | `Pending_flush ]) Stdlib.result

Close the underlying files.