0, the time of expiry of this session */
long maxage; /* if > 0, the maxage of the session, from
* which expiry is calculated */
int dirty; /* dirty flag */
int cached; /* true if this session was loaded from a
* cache of some kind */
int written; /* true if this session has already been
* written */
} session_rec;
/**
* Structure to carry the per-dir session config.
*/
typedef struct {
int enabled; /* whether the session has been enabled for
* this directory */
int enabled_set;
long maxage; /* seconds until session expiry */
int maxage_set;
const char *header; /* header to inject session */
int header_set;
int env; /* whether the session has been enabled for
* this directory */
int env_set;
apr_array_header_t *includes; /* URL prefixes to be included. All
* URLs included if empty */
apr_array_header_t *excludes; /* URL prefixes to be excluded. No
* URLs excluded if empty */
apr_time_t expiry_update_time; /* seconds the session expiry may change and
* not have to be rewritten */
int expiry_update_set;
} session_dir_conf;
/**
* Hook to load the session.
*
* If the session doesn't exist, a blank one will be created.
*
* @param r The request
* @param z A pointer to where the session will be written.
*/
APR_DECLARE_EXTERNAL_HOOK(ap, SESSION, apr_status_t, session_load,
(request_rec * r, session_rec ** z))
/**
* Hook to save the session.
*
* In most implementations the session is only saved if the dirty flag is
* true. This prevents the session being saved unnecessarily.
*
* @param r The request
* @param z A pointer to where the session will be written.
*/
APR_DECLARE_EXTERNAL_HOOK(ap, SESSION, apr_status_t, session_save,
(request_rec * r, session_rec * z))
/**
* Hook to encode the session.
*
* In the default implementation, the key value pairs are encoded using
* key value pairs separated by equals, in turn separated by ampersand,
* like a web form.
*
* @param r The request
* @param z A pointer to where the session will be written.
*/
APR_DECLARE_EXTERNAL_HOOK(ap, SESSION, apr_status_t, session_encode,
(request_rec * r, session_rec * z))
/**
* Hook to decode the session.
*
* In the default implementation, the key value pairs are encoded using
* key value pairs separated by equals, in turn separated by ampersand,
* like a web form.
*
* @param r The request
* @param z A pointer to where the session will be written.
*/
APR_DECLARE_EXTERNAL_HOOK(ap, SESSION, apr_status_t, session_decode,
(request_rec * r, session_rec * z))
APR_DECLARE_OPTIONAL_FN(
apr_status_t,
ap_session_get,
(request_rec * r, session_rec * z, const char *key, const char **value));
APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_session_set,
(request_rec * r, session_rec * z, const char *key, const char *value));
APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_session_load,
(request_rec *, session_rec **));
APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_session_save,
(request_rec *, session_rec *));
/**
* The name of the module.
*/
extern module AP_MODULE_DECLARE_DATA session_module;
#endif /* MOD_SESSION_H */
/** @} */