module Eliom_reference:sig
..end
type ('a, +'storage)
eref'
Volatile
allows creation of
references which can be, get, set, modify, and unset volatile references
through non-Lwt functions.type'a
eref =('a, [ `Persistent | `Volatile ]) eref'
'a
.exception Eref_not_initialized
val eref : scope:[< Eliom_common.all_scope ] ->
?secure:bool -> ?persistent:string -> 'a -> 'a eref
eref ~scope value
creates an Eliom reference for
the given scope
and initialize it with value
. See the Eliom
manual for more information about .
Use the optional parameter ?persistent
if you want the data to
survive after relaunching the server. You must give an unique name
to the table in which it will be stored on the hard disk (using
Ocsipersist). Be very careful to use unique names, and to change
the name if you change the type of the data, otherwise the server
may crash (unsafe unmarshaling). This parameter has no effect for
scope Eliom_common.request_scope
.
Use the optional parameter ~secure:true
if you want the data to
be available only using HTTPS. This parameter has no effect for
scopes Eliom_common.global_scope
, Eliom_common.site_scope
, and
Eliom_common.request_scope
.
Warning: Eliom references of scope Eliom_common.global_scope
,
Eliom_common.site_scope
or
Eliom_common.request_scope
may be created at any time ; but for other
scopes, they must be created when the site information is
available to Eliom, that is, either during the initialization
phase of the server (while reading the configuration file) or
during a request. Otherwise, it will raise the exception
Eliom_common.Eliom_site_information_not_available
. If you are
using static linking, you must delay the call to this function
until the configuration file is read, using
Eliom_service.register_eliom_module
. Otherwise you will also
get this exception.
val eref_from_fun : scope:[< Eliom_common.all_scope ] ->
?secure:bool -> ?persistent:string -> (unit -> 'a) -> 'a eref
eref_from_fun
works like the above Eliom_reference.eref
,
but instead of providing a value for the initial content, a function f
for
creating the initial content is provided (cf. also Lazy.from_fun
).
In each scope, the function f
is called for creating the value of the
reference the first time the reference is read (by Eliom_reference.get
),
if the value has not been set explicitly before (by Eliom_reference.set
);
or if the reference was reset (by Eliom_reference.reset
) before.
val get : 'a eref -> 'a Lwt.t
get eref
returns the current value of the Eliom
reference eref
.
Warning: this function cannot be used outside of a service
handler when eref
has been created with a scope different of
Eliom_common.global_scope
; it can neither be used outside of an
Eliom module when eref
has been created with scope
Eliom_common.site_scope
val set : 'a eref -> 'a -> unit Lwt.t
set eref v
set v
as current value of the Eliom
reference eref
.
Warning: this function could not be used outside af a service
handler when eref
has been created with a scope different of
Eliom_common.global_scope
; it can neither be used outside of an
Eliom module when eref
has been created with scope
Eliom_common.site_scope
val modify : 'a eref -> ('a -> 'a) -> unit Lwt.t
modify eref f
modifies the content of the Eliom
reference eref
by applying the function f
on it.
Warning: this function could not be used outside af a service
handler when eref
has been created with a scope different of
Eliom_common.global_scope
; it can neither be used outside of an
Eliom module when eref
has been created with scope
Eliom_common.site_scope
val unset : 'a eref -> unit Lwt.t
unset eref
reset the content of the Eliom reference
eref
to its initial value.
Warning: this function could not be used outside af a service
handler when eref
has been created with a scope different of
Eliom_common.global_scope
; it can neither be used outside of an
Eliom module when eref
has been created with scope
Eliom_common.site_scope
module Volatile:sig
..end
Eliom_reference
but a non-Lwt interface
for non-persistent Eliom references.
module Ext:sig
..end