NAME¶
Eliom_reference - Server side state data, a.k.a Eliom references
Module¶
Module Eliom_reference
Documentation¶
Module
Eliom_reference
:
sig end
Server side state data, a.k.a Eliom references
type ('a, +'b) eref'
Eliom references come in two flavors: they may be stored persistently or the may
be volatile. The module
Volatile allows one to creation of references
which can be, get, set, modify, and unset volatile references through non-Lwt
functions.
type 'a eref =
('a, [ `Persistent | `Volatile ])
eref'
The type of Eliom references whose content is of type
'a .
val eref :
scope:[< Eliom_common.all_scope ] ->
?secure:bool -> ?persistent:string -> 'a -> 'a eref
The function
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 .
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 ,
Eliom_common.site , and
Eliom_common.request .
Warning: Eliom references of scope
Eliom_common.global ,
Eliom_common.site or
Eliom_common.request 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
The function
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.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
The function
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 ; it can neither be used outside of an Eliom module
when
eref has been created with scope
!Eliom_common.site
val set :
'a eref -> 'a -> unit Lwt.t
The function
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 ; it can neither be used outside of an Eliom module
when
eref has been created with scope
!Eliom_common.site
val modify :
'a eref -> ('a -> 'a) -> unit Lwt.t
The function
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 ; it can neither be used outside of an Eliom module
when
eref has been created with scope
!Eliom_common.site
val unset :
'a eref -> unit Lwt.t
The function
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 ; it can neither be used outside of an Eliom module
when
eref has been created with scope
!Eliom_common.site
module Volatile : sig end
Same functions as in
Eliom_reference but a non-Lwt interface for
non-persistent Eliom references.