Collaboration diagram for Resource List Routines:




typedef struct apr_reslist_t apr_reslist_t
typedef apr_status_t(* apr_reslist_constructor) (void **resource, void *params, apr_pool_t *pool)
typedef apr_status_t(* apr_reslist_destructor) (void *resource, void *params, apr_pool_t *pool)


apr_status_t apr_reslist_create (apr_reslist_t **reslist, int min, int smax, int hmax, apr_interval_time_t ttl, apr_reslist_constructor con, apr_reslist_destructor de, void *params, apr_pool_t *pool)
apr_status_t apr_reslist_destroy (apr_reslist_t *reslist)
apr_status_t apr_reslist_acquire_ex (apr_reslist_t *reslist, void **resource, int flags)
apr_status_t apr_reslist_acquire (apr_reslist_t *reslist, void **resource)
apr_status_t apr_reslist_release (apr_reslist_t *reslist, void *resource)
void apr_reslist_timeout_set (apr_reslist_t *reslist, apr_interval_time_t timeout)
apr_uint32_t apr_reslist_acquired_count (apr_reslist_t *reslist)
apr_status_t apr_reslist_invalidate (apr_reslist_t *reslist, void *resource)
apr_status_t apr_reslist_maintain (apr_reslist_t *reslist)
void apr_reslist_cleanup_order_set (apr_reslist_t *reslist, apr_uint32_t mode)

Detailed Description

Macro Definition Documentation









default pool cleanup



use pool pre cleanup

Typedef Documentation

◆ apr_reslist_constructor

typedef apr_status_t(* apr_reslist_constructor) (void **resource, void *params, apr_pool_t *pool)

◆ apr_reslist_destructor

typedef apr_status_t(* apr_reslist_destructor) (void *resource, void *params, apr_pool_t *pool)

◆ apr_reslist_t

typedef struct apr_reslist_t apr_reslist_t

Opaque resource list object

Function Documentation

◆ apr_reslist_acquire()

apr_status_t apr_reslist_acquire ( apr_reslist_t reslist,
void **  resource 

Retrieve the latest resource from the list, creating a new one if necessary. If we have met our maximum number of resources, we will block until one becomes available.

reslistThe resource list.
resourceAn address where the pointer to the resource will be stored.

◆ apr_reslist_acquire_ex()

apr_status_t apr_reslist_acquire_ex ( apr_reslist_t reslist,
void **  resource,
int  flags 

Retrieve a resource from the list, either the oldest (FIFO) or latest (LIFO), creating a new one if necessary. If we have met our maximum number of resources, we will block until one becomes available.

reslistThe resource list.
resourceAn address where the pointer to the resource will be stored.
flagsBitmask of APR_RESLIST_ACQUIRE_* flags.

◆ apr_reslist_acquired_count()

apr_uint32_t apr_reslist_acquired_count ( apr_reslist_t reslist)

Return the number of outstanding resources.

reslistThe resource list.

◆ apr_reslist_cleanup_order_set()

void apr_reslist_cleanup_order_set ( apr_reslist_t reslist,
apr_uint32_t  mode 

Set reslist cleanup order.

reslistThe resource list.
modeCleanup order mode
          APR_RESLIST_CLEANUP_DEFAULT  default pool cleanup order
          APR_RESLIST_CLEANUP_FIRST    use pool pre cleanup
If APR_RESLIST_CLEANUP_FIRST is used the destructors will be called before child pools of the pool used to create the reslist are destroyed. This allows to explicitly destroy the child pools inside reslist destructors.

◆ apr_reslist_create()

apr_status_t apr_reslist_create ( apr_reslist_t **  reslist,
int  min,
int  smax,
int  hmax,
apr_interval_time_t  ttl,
apr_reslist_constructor  con,
apr_reslist_destructor  de,
void *  params,
apr_pool_t pool 

Create a new resource list with the following parameters:

reslistAn address where the pointer to the new resource list will be stored.
minAllowed minimum number of available resources. Zero creates new resources only when needed.
smaxResources will be destroyed during reslist maintenance to meet this maximum restriction as they expire (reach their ttl).
hmaxAbsolute maximum limit on the number of total resources.
ttlIf non-zero, sets the maximum amount of time in microseconds an unused resource is valid. Any resource which has exceeded this time will be destroyed, either when encountered by apr_reslist_acquire() or during reslist maintenance.
conConstructor routine that is called to create a new resource.
deDestructor routine that is called to destroy an expired resource.
paramsPassed to constructor and deconstructor
poolThe pool from which to create this resource list. Also the same pool that is passed to the constructor and destructor routines.
If APR has been compiled without thread support, hmax will be automatically set to 1 and values of min and smax will be forced to 1 for any non-zero value.

◆ apr_reslist_destroy()

apr_status_t apr_reslist_destroy ( apr_reslist_t reslist)

Destroy the given resource list and all resources controlled by this list. FIXME: Should this block until all resources become available, or maybe just destroy all the free ones, or maybe destroy them even though they might be in use by something else? Currently it will abort if there are resources that haven't been released, so there is an assumption that all resources have been released to the list before calling this function.

reslistThe reslist to destroy

◆ apr_reslist_invalidate()

apr_status_t apr_reslist_invalidate ( apr_reslist_t reslist,
void *  resource 

Invalidate a resource in the pool - e.g. a database connection that returns a "lost connection" error and can't be restored. Use this instead of apr_reslist_release if the resource is bad.

reslistThe resource list.
resourceThe resource to invalidate.

◆ apr_reslist_maintain()

apr_status_t apr_reslist_maintain ( apr_reslist_t reslist)

Perform routine maintenance on the resource list. This call may instantiate new resources or expire old resources.

reslistThe resource list.

◆ apr_reslist_release()

apr_status_t apr_reslist_release ( apr_reslist_t reslist,
void *  resource 

Return a resource back to the list of available resources.

reslistThe resource list.
resourceThe resource to return to the list.

◆ apr_reslist_timeout_set()

void apr_reslist_timeout_set ( apr_reslist_t reslist,
apr_interval_time_t  timeout 

Set the timeout the acquire will wait for a free resource when the maximum number of resources is exceeded.

reslistThe resource list.
timeoutTimeout to wait. The zero waits forever.