package tezos-stdlib-unix
Library
Module
Module type
Parameter
Class
Class type
Persistent data manager.
Every data read/write operation is protected by a mutex preventing concurrent data-races.
A data structure that represents files via their paths and encodings.
The type for the (persistent) data of a file.
val make_file : ?json:bool -> filepath:string -> 'a Data_encoding.t -> 'a file
make_file ?(json=false) ~filepath encoding
represents a file located at filepath
. The content of this value is encoded using encoding
. By default, the content is encoded in binary content except if json=true
.
Warning It is the caller responsability to ensure that the base directory of the filepath
exists; otherwise, reading and writing will fail.
val write : 'a t -> 'a -> unit Tezos_error_monad.Error_monad.tzresult Lwt.t
write data value
overwrites the previous data
with the new value
. Note that if the write fails, The cache will have the new value (the one returned by get
. It is recommended to reload a store in that case and try to write the value again.
val write_file :
'a file ->
'a ->
unit Tezos_error_monad.Error_monad.tzresult Lwt.t
write_file encoded_file value
raw writes the encoded_file
with the value
.
Warning this function should not be used in a normal context as it aims to overwrite the target without preserving data races. Favour the usage of write
.
val update_with :
'a t ->
('a -> 'a Lwt.t) ->
unit Tezos_error_monad.Error_monad.tzresult Lwt.t
update_with data f
atomically updates data
with the result of the application of f
. Concurrent accesses to the data will block until the value is updated.
Warning Calling read/write in f
will result in a deadlock.
val load : 'a file -> 'a t Tezos_error_monad.Error_monad.tzresult Lwt.t
load encoded_file
loads and decode a data from an encoded_file
.
val init :
'a file ->
initial_data:'a ->
'a t Tezos_error_monad.Error_monad.tzresult Lwt.t
init encoded_file ~initial_data
creates or load an on-disk data. If the file already exists, then the data is read from the file. Otherwise, initial_data
is used.