Ocsigen

This is a preliminary version of the documentation. Help us to improve it by filling tickets. We are looking for native english speakers to proof read the documentation. Contact us!

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 na_key =
      Na_no
    | Na_get_ of string
    | Na_post_ of string
    | Na_get' of string
    | Na_post' of 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 : Eliommod.na_key;
    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 -> '-> 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 -> '-> unit
      val mem : 'a t -> key -> bool
      val iter : (key -> '-> unit) -> 'a t -> unit
      val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
      val length : 'a t -> int
    end
  type tables
  type 'a servicecookiestablecontent =
      string * 'a * float option Pervasives.ref *
      Eliommod.timeout Pervasives.ref *
      Eliomsessiongroups.sessgrp option Pervasives.ref
  type 'a servicecookiestable =
      'Eliommod.servicecookiestablecontent Eliommod.SessionCookies.t
  type datacookiestablecontent =
      string * float option Pervasives.ref *
      Eliommod.timeout Pervasives.ref *
      Eliomsessiongroups.sessgrp option Pervasives.ref
  type datacookiestable =
      Eliommod.datacookiestablecontent Eliommod.SessionCookies.t
  type 'a session_cookie
  type 'a one_service_cookie_info = {
    sc_value : string;
    sc_table : 'Pervasives.ref;
    sc_timeout : Eliommod.timeout Pervasives.ref;
    sc_exp : float option Pervasives.ref;
    sc_cookie_exp : Eliommod.cookie_exp Pervasives.ref;
    sc_session_group : Eliomsessiongroups.sessgrp option Pervasives.ref;
  }
  type one_data_cookie_info = {
    dc_value : string;
    dc_timeout : Eliommod.timeout Pervasives.ref;
    dc_exp : float option Pervasives.ref;
    dc_cookie_exp : Eliommod.cookie_exp Pervasives.ref;
    dc_session_group : Eliomsessiongroups.sessgrp option Pervasives.ref;
  }
  type one_persistent_cookie_info = {
    pc_value : string;
    pc_timeout : Eliommod.timeout Pervasives.ref;
    pc_cookie_exp : Eliommod.cookie_exp Pervasives.ref;
    pc_session_group : Eliomsessiongroups.perssessgrp option Pervasives.ref;
  }
  type 'a cookie_info =
      (string option *
       '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 *
        Eliomsessiongroups.perssessgrp 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 list;
    mutable unregistered_na_services : Eliommod.na_key list;
    mutable max_volatile_data_sessions_per_group : int option;
    mutable max_service_sessions_per_group : int option;
    mutable max_persistent_data_sessions_per_group : int option;
  }
  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 list * Eliommod.na_key list)
  exception Eliom_error_while_loading_site of string
  type anon_params_type = int
  val persistent_cookies_table :
    (string * float option * Eliommod.timeout *
     Eliomsessiongroups.perssessgrp option)
    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 ->
    Eliommod.na_key ->
    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_num : 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 -> 'Eliommod.SessionCookies.t
  val create_volatile_table_during_session :
    Eliommod.server_params -> 'Eliommod.SessionCookies.t
  val create_persistent_table : string -> 'Ocsipersist.table
  val remove_from_all_persistent_tables : string -> unit Lwt.t
  val find_or_create_service_cookie :
    ?session_group:string ->
    ?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_group:string ->
    ?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_group:string ->
    ?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 -> Eliomsessiongroups.sessgrp option -> string -> unit
  val close_service_session :
    ?close_group:bool ->
    ?session_name:string -> sp:Eliommod.server_params -> unit -> unit
  val close_service_group :
    Eliommod.sitedata -> Eliomsessiongroups.sessgrp option -> unit
  val close_data_session2 :
    Eliommod.sitedata -> Eliomsessiongroups.sessgrp option -> string -> unit
  val close_data_session :
    ?close_group:bool ->
    ?session_name:string -> sp:Eliommod.server_params -> unit -> unit
  val close_data_group :
    Eliommod.sitedata -> Eliomsessiongroups.sessgrp option -> unit
  val close_volatile_session :
    ?close_group:bool ->
    ?session_name:string -> sp:Eliommod.server_params -> unit -> unit
  val close_persistent_session2 :
    Eliomsessiongroups.perssessgrp option -> string -> unit Lwt.t
  val close_persistent_session :
    ?close_group:bool ->
    ?session_name:string -> sp:Eliommod.server_params -> unit -> unit Lwt.t
  val close_persistent_group :
    Eliomsessiongroups.perssessgrp option -> unit Lwt.t
  val close_all_service_sessions :
    ?close_group:bool ->
    ?session_name:string -> Eliommod.sitedata -> unit Lwt.t
  val close_all_data_sessions :
    ?close_group:bool ->
    ?session_name:string -> Eliommod.sitedata -> unit Lwt.t
  val close_all_persistent_sessions :
    ?close_group:bool ->
    ?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 *
      Eliomsessiongroups.perssessgrp option) ->
     unit Lwt.t) ->
    unit Lwt.t
  val fold_service_sessions :
    Eliommod.sitedata ->
    (Eliommod.SessionCookies.key *
     Eliommod.tables Eliommod.servicecookiestablecontent * Eliommod.sitedata ->
     '-> 'Lwt.t) ->
    '-> 'Lwt.t
  val fold_data_sessions :
    Eliommod.sitedata ->
    (Eliommod.SessionCookies.key * Eliommod.datacookiestablecontent *
     Eliommod.sitedata -> '-> 'Lwt.t) ->
    '-> 'Lwt.t
  val fold_persistent_sessions :
    (string *
     (string * float option * Eliommod.timeout *
      Eliomsessiongroups.perssessgrp option) ->
     '-> 'Lwt.t) ->
    '-> '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 -> unit
  val remove_unregistered : Eliommod.sitedata -> string list -> unit
  val add_unregistered_na : Eliommod.sitedata -> Eliommod.na_key -> unit
  val remove_unregistered_na : Eliommod.sitedata -> Eliommod.na_key -> 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