Quelle ap_socache.h
Sprache: C
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements . See the NOTICE file distributed with
* this work for additional information regarding copyright ownership .
* The ASF licenses this file to You under the Apache License , Version 2 . 0
* ( the " License " ) ; you may not use this file except in compliance with
* the License . You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
/**
* @ file ap_socache . h
* @ brief Small object cache provider interface .
*
* @ defgroup AP_SOCACHE ap_socache
* @ ingroup APACHE_MODS
* @ {
*/
#ifndef AP_SOCACHE_H
#define AP_SOCACHE_H
#include "httpd.h"
#include "ap_provider.h"
#include "apr_pools.h"
#include "apr_time.h"
#ifdef __cplusplus
extern "C" {
#endif
/** If this flag is set, the store/retrieve/remove/status interfaces
* of the provider are NOT safe to be called concurrently from
* multiple processes or threads , and an external global mutex must be
* used to serialize access to the provider .
*/
/* XXX: Even if store/retrieve/remove is atomic, isn't it useful to note
* independently that status and iterate may or may not be ?
*/
#define AP_SOCACHE_FLAG_NOTMPSAFE (0 x0001)
/** A cache instance. */
typedef struct ap_socache_instance_t ap_socache_instance_t;
/** Hints which may be passed to the init function; providers may
* ignore some or all of these hints. */
struct ap_socache_hints {
/** Approximate average length of IDs: */
apr_size_t avg_id_len;
/** Approximate average size of objects: */
apr_size_t avg_obj_size;
/** Suggested interval between expiry cleanup runs; */
apr_interval_time_t expiry_interval;
};
/**
* Iterator callback prototype for the ap_socache_provider_t - > iterate ( ) method
* @ param instance The cache instance
* @ param s Associated server context ( for logging )
* @ param userctx User defined pointer passed from the iterator call
* @ param id Unique ID for the object ( binary blob )
* with a trailing null char for convenience
* @ param idlen Length of id blob
* @ param data Output buffer to place retrieved data ( binary blob )
* with a trailing null char for convenience
* @ param datalen Length of data buffer
* @ param pool Pool for temporary allocations
* @ return APR status value ; return APR_SUCCESS or the iteration will halt ;
* this value is returned to the ap_socache_provider_t - > iterate ( ) caller
*/
typedef apr_status_t (ap_socache_iterator_t)(ap_socache_instance_t *instance,
server_rec *s,
void *userctx,
const unsigned char *id,
unsigned int idlen,
const unsigned char *data,
unsigned int datalen,
apr_pool_t *pool);
/** A socache provider structure. socache providers are registered
* with the ap_provider . h interface using the AP_SOCACHE_PROVIDER_ *
* constants. */
typedef struct ap_socache_provider_t {
/** Canonical provider name. */
const char *name;
/** Bitmask of AP_SOCACHE_FLAG_* flags. */
unsigned int flags;
/**
* Create a small object cache based on the given configuration
* string . The instance pointer returned in the instance
* parameter will be passed as the first argument to subsequent
* invocations .
*
* @ param instance Output parameter to which instance object is written .
* @ param arg User - specified configuration string . May be NULL to
* force use of defaults .
* @ param tmp Pool to be used for any temporary allocations
* @ param p Pool to be use for any allocations lasting as long as
* the created instance
* @ return NULL on success , or an error string on failure .
*/
const char *(*create)(ap_socache_instance_t **instance, const char *arg,
apr_pool_t *tmp, apr_pool_t *p);
/**
* Initialize the cache . The cname must be of maximum length 16
* characters , and uniquely identifies the consumer of the cache
* within the server ; using the module name is recommended , e . g .
* " mod_ssl - sess " . This string may be used within a filesystem
* path so use of only alphanumeric [ a - z0 - 9 _ - ] characters is
* recommended . If hints is non - NULL , it gives a set of hints for
* the provider . Returns APR error code .
*
* @ param instance The cache instance
* @ param cname A unique string identifying the consumer of this API
* @ param hints Optional hints argument describing expected cache use
* @ param s Server structure to which the cache is associated
* @ param pool Pool for long - lived allocations
* @ return APR status value indicating success .
*/
apr_status_t (*init)(ap_socache_instance_t *instance, const char *cname,
const struct ap_socache_hints *hints,
server_rec *s, apr_pool_t *pool);
/**
* Destroy a given cache instance object .
* @ param instance The cache instance to destroy .
* @ param s Associated server structure ( for logging purposes )
*/
void (*destroy)(ap_socache_instance_t *instance, server_rec *s);
/**
* Store an object in a cache instance .
* @ param instance The cache instance
* @ param s Associated server structure ( for logging purposes )
* @ param id Unique ID for the object ; binary blob
* @ param idlen Length of id blob
* @ param expiry Absolute time at which the object expires
* @ param data Data to store ; binary blob
* @ param datalen Length of data blob
* @ param pool Pool for temporary allocations .
* @ return APR status value .
*/
apr_status_t (*store)(ap_socache_instance_t *instance, server_rec *s,
const unsigned char *id, unsigned int idlen,
apr_time_t expiry,
unsigned char *data, unsigned int datalen,
apr_pool_t *pool);
/**
* Retrieve a cached object .
*
* @ param instance The cache instance
* @ param s Associated server structure ( for logging purposes )
* @ param id Unique ID for the object ; binary blob
* @ param idlen Length of id blob
* @ param data Output buffer to place retrievd data ( binary blob )
* @ param datalen On entry , length of data buffer ; on exit , the
* number of bytes written to the data buffer .
* @ param pool Pool for temporary allocations .
* @ return APR status value ; APR_NOTFOUND if the object was not
* found
*/
apr_status_t (*retrieve)(ap_socache_instance_t *instance, server_rec *s,
const unsigned char *id, unsigned int idlen,
unsigned char *data, unsigned int *datalen,
apr_pool_t *pool);
/**
* Remove an object from the cache
*
* @ param instance The cache instance
* @ param s Associated server structure ( for logging purposes )
* @ param id Unique ID for the object ; binary blob
* @ param idlen Length of id blob
* @ param pool Pool for temporary allocations .
*/
apr_status_t (*remove)(ap_socache_instance_t *instance, server_rec *s,
const unsigned char *id, unsigned int idlen,
apr_pool_t *pool);
/**
* Dump the status of a cache instance for mod_status . Will use
* the ap_r * interfaces to produce appropriate status output .
* XXX : ap_r * are deprecated , bad dogfood
*
* @ param instance The cache instance
* @ param r The request structure
* @ param flags The AP_STATUS_ * constants used ( see mod_status . h )
*/
void (*status)(ap_socache_instance_t *instance, request_rec *r, int flags);
/**
* Dump all cached objects through an iterator callback .
* @ param instance The cache instance
* @ param s Associated server context ( for processing and logging )
* @ param userctx User defined pointer passed through to the iterator
* @ param iterator The user provided callback function which will receive
* individual calls for each unexpired id / data pair
* @ param pool Pool for temporary allocations .
* @ return APR status value ; APR_NOTFOUND if the object was not
* found
*/
apr_status_t (*iterate)(ap_socache_instance_t *instance, server_rec *s,
void *userctx, ap_socache_iterator_t *iterator,
apr_pool_t *pool);
} ap_socache_provider_t;
/** The provider group used to register socache providers. */
#define AP_SOCACHE_PROVIDER_GROUP "socache"
/** The provider version used to register socache providers. */
#define AP_SOCACHE_PROVIDER_VERSION "0"
/** Default provider name. */
#define AP_SOCACHE_DEFAULT_PROVIDER "default"
#ifdef __cplusplus
}
#endif
#endif /* AP_SOCACHE_H */
/** @} */
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland
2026-10-09
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126438
#Domains=1867298