sig
exception Eliom_404
exception Eliom_Wrong_parameter
exception Eliom_Link_too_old
exception Eliom_Session_expired
exception Eliom_Service_session_expired of string list
exception Eliom_Typing_Error of (string * exn) list
exception Eliom_function_forbidden_outside_site_loading of string
type timeout = TGlobal | TNone | TSome of float
type cookie =
Set of Extensions.url_path option * float option * string * string
| Unset of Extensions.url_path option * string
type result_to_send =
EliomResult of Http_frame.result
| EliomExn of (exn list * Eliommod.cookie list)
type cookie_exp = CENothing | CEBrowser | CESome of float
type internal_state = string
type sess_info = {
si_other_get_params : (string * string) list;
si_all_get_params : (string * string) list;
si_all_post_params : (string * string) list;
si_service_session_cookies : string Http_frame.Cookievalues.t;
si_data_session_cookies : string Http_frame.Cookievalues.t;
si_persistent_session_cookies : string Http_frame.Cookievalues.t;
si_nonatt_info : string option * string option;
si_state_info :
Eliommod.internal_state option * Eliommod.internal_state option;
si_config_file_charset : string;
si_previous_extension_error : int;
}
module SessionCookies :
sig
type key = string
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
end
type tables
type 'a servicecookiestablecontent =
string * 'a * float option Pervasives.ref *
Eliommod.timeout Pervasives.ref
type 'a servicecookiestable =
'a Eliommod.servicecookiestablecontent Eliommod.SessionCookies.t
type datacookiestablecontent =
string * float option Pervasives.ref * Eliommod.timeout Pervasives.ref
type datacookiestable =
Eliommod.datacookiestablecontent Eliommod.SessionCookies.t
type 'a session_cookie
type 'a one_service_cookie_info =
string * 'a Pervasives.ref * Eliommod.timeout Pervasives.ref *
float option Pervasives.ref * Eliommod.cookie_exp Pervasives.ref
type one_data_cookie_info =
string * Eliommod.timeout Pervasives.ref *
float option Pervasives.ref * Eliommod.cookie_exp Pervasives.ref
type one_persistent_cookie_info =
string * Eliommod.timeout Pervasives.ref *
Eliommod.cookie_exp Pervasives.ref
type 'a cookie_info =
(string option *
'a Eliommod.one_service_cookie_info Eliommod.session_cookie
Pervasives.ref)
Http_frame.Cookievalues.t Pervasives.ref *
(string option *
Eliommod.one_data_cookie_info Eliommod.session_cookie Pervasives.ref)
Lazy.t Http_frame.Cookievalues.t Pervasives.ref *
((string * Eliommod.timeout * float option) option *
Eliommod.one_persistent_cookie_info Eliommod.session_cookie
Pervasives.ref)
Lwt.t Lazy.t Http_frame.Cookievalues.t Pervasives.ref
type sitedata = {
site_dir : Extensions.url_path;
site_dir_string : string;
mutable servtimeout : (string * float option) list;
mutable datatimeout : (string * float option) list;
mutable perstimeout : (string * float option) list;
global_services : Eliommod.tables;
session_services : Eliommod.tables Eliommod.servicecookiestable;
session_data : Eliommod.datacookiestable;
mutable remove_session_data : string -> unit;
mutable not_bound_in_data_tables : string -> bool;
mutable exn_handler :
Eliommod.server_params -> exn -> Eliommod.result_to_send Lwt.t;
mutable unregistered_services : Extensions.url_path option list;
}
and server_params = {
sp_ri : Extensions.request_info;
sp_si : Eliommod.sess_info;
sp_sitedata : Eliommod.sitedata;
sp_cookie_info : Eliommod.tables Eliommod.cookie_info;
sp_suffix : Extensions.url_path;
sp_fullsessname : string option;
}
exception Eliom_duplicate_registration of string
exception Eliom_page_erasing of string
exception Eliom_there_are_unregistered_services of
(string list * string list option list)
exception Eliom_error_while_loading_site of string
type anon_params_type = int
val persistent_cookies_table :
(string * float option * Eliommod.timeout * int64) Ocsipersist.table
type page_table_key = {
key_state :
Eliommod.internal_state option * Eliommod.internal_state option;
key_kind : Http_frame.Http_header.http_method;
}
val empty_tables : unit -> Eliommod.tables
val add_service :
Eliommod.tables ->
bool ->
string list ->
Eliommod.page_table_key *
((Eliommod.anon_params_type * Eliommod.anon_params_type) *
int Pervasives.ref option * (float * float Pervasives.ref) option *
(Eliommod.server_params -> Eliommod.result_to_send Lwt.t)) ->
unit
val add_naservice :
Eliommod.tables ->
bool ->
string option * string option ->
int Pervasives.ref option * (float * float Pervasives.ref) option *
(Eliommod.server_params -> Eliommod.result_to_send Lwt.t) -> unit
val get_state_param_name : string
val post_state_param_name : string
val eliom_suffix_name : string
val eliom_suffix_internal_name : string
val naservice_name : string
val co_param_prefix : string
val na_co_param_prefix : string
val config : Simplexmlparser.xml list Pervasives.ref
val set_global_service_timeout :
session_name:string option ->
recompute_expdates:bool ->
Eliommod.sitedata -> float option -> unit Lwt.t
val get_global_service_timeout :
session_name:string option -> Eliommod.sitedata -> float option
val set_global_data_timeout :
session_name:string option ->
recompute_expdates:bool ->
Eliommod.sitedata -> float option -> unit Lwt.t
val get_global_data_timeout :
session_name:string option -> Eliommod.sitedata -> float option
val set_global_persistent_timeout :
session_name:string option ->
recompute_expdates:bool ->
Eliommod.sitedata -> float option -> unit Lwt.t
val get_global_persistent_timeout :
session_name:string option -> Eliommod.sitedata -> float option
val get_default_service_timeout : unit -> float option
val set_default_service_timeout : float option -> unit
val get_default_data_timeout : unit -> float option
val set_default_data_timeout : float option -> unit
val set_default_volatile_timeout : float option -> unit
val get_default_persistent_timeout : unit -> float option
val set_default_persistent_timeout : float option -> unit
val create_volatile_table : unit -> 'a Eliommod.SessionCookies.t
val create_volatile_table_during_session :
Eliommod.server_params -> 'a Eliommod.SessionCookies.t
val create_persistent_table : string -> 'a Ocsipersist.table
val remove_from_all_persistent_tables : string -> unit Lwt.t
val find_or_create_service_cookie :
?session_name:string ->
sp:Eliommod.server_params ->
unit -> Eliommod.tables Eliommod.one_service_cookie_info
val find_service_cookie_only :
?session_name:string ->
sp:Eliommod.server_params ->
unit -> Eliommod.tables Eliommod.one_service_cookie_info
val find_or_create_data_cookie :
?session_name:string ->
sp:Eliommod.server_params -> unit -> Eliommod.one_data_cookie_info
val find_data_cookie_only :
?session_name:string ->
sp:Eliommod.server_params -> unit -> Eliommod.one_data_cookie_info
val find_or_create_persistent_cookie :
?session_name:string ->
sp:Eliommod.server_params ->
unit -> Eliommod.one_persistent_cookie_info Lwt.t
val find_persistent_cookie_only :
?session_name:string ->
sp:Eliommod.server_params ->
unit -> Eliommod.one_persistent_cookie_info Lwt.t
val close_service_session2 : Eliommod.sitedata -> string -> unit
val close_service_session :
?session_name:string -> sp:Eliommod.server_params -> unit -> unit
val close_data_session2 : Eliommod.sitedata -> string -> unit
val close_data_session :
?session_name:string -> sp:Eliommod.server_params -> unit -> unit
val close_volatile_session :
?session_name:string -> sp:Eliommod.server_params -> unit -> unit
val close_persistent_session2 : string -> unit Lwt.t
val close_persistent_session :
?session_name:string -> sp:Eliommod.server_params -> unit -> unit Lwt.t
val close_all_service_sessions :
?session_name:string -> Eliommod.sitedata -> unit Lwt.t
val close_all_data_sessions :
?session_name:string -> Eliommod.sitedata -> unit Lwt.t
val close_all_persistent_sessions :
?session_name:string -> Eliommod.sitedata -> unit Lwt.t
val iter_service_sessions :
Eliommod.sitedata ->
(Eliommod.SessionCookies.key *
Eliommod.tables Eliommod.servicecookiestablecontent * Eliommod.sitedata ->
unit Lwt.t) ->
unit Lwt.t
val iter_data_sessions :
Eliommod.sitedata ->
(Eliommod.SessionCookies.key * Eliommod.datacookiestablecontent *
Eliommod.sitedata -> unit Lwt.t) ->
unit Lwt.t
val iter_persistent_sessions :
(string * (string * float option * Eliommod.timeout * Int64.t) ->
unit Lwt.t) ->
unit Lwt.t
val fold_service_sessions :
Eliommod.sitedata ->
(Eliommod.SessionCookies.key *
Eliommod.tables Eliommod.servicecookiestablecontent * Eliommod.sitedata ->
'a -> 'a Lwt.t) ->
'a -> 'a Lwt.t
val fold_data_sessions :
Eliommod.sitedata ->
(Eliommod.SessionCookies.key * Eliommod.datacookiestablecontent *
Eliommod.sitedata -> 'a -> 'a Lwt.t) ->
'a -> 'a Lwt.t
val fold_persistent_sessions :
(string * (string * float option * Eliommod.timeout * Int64.t) ->
'a -> 'a Lwt.t) ->
'a -> 'a Lwt.t
val number_of_service_sessions : sp:Eliommod.server_params -> int
val number_of_data_sessions : sp:Eliommod.server_params -> int
val number_of_tables : unit -> int
val number_of_table_elements : unit -> int list
val number_of_persistent_sessions : unit -> int Lwt.t
val number_of_persistent_tables : unit -> int
val number_of_persistent_table_elements : unit -> (string * int) list Lwt.t
val add_unregistered : Eliommod.sitedata -> string list option -> unit
val remove_unregistered : Eliommod.sitedata -> string list option -> unit
val global_register_allowed : unit -> (unit -> Eliommod.sitedata) option
val add_cookie_list_to_send :
Eliommod.sitedata ->
Eliommod.cookie list -> Http_frame.cookieset -> Http_frame.cookieset
end