Resource List Routines
[APR Utility Functions]


Typedefs

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)

Functions

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 (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)

Detailed Description

Warning:
Resource list data types and routines are only available when threads are enabled (i.e. APR_HAS_THREADS is not zero).

Typedef Documentation

typedef struct apr_reslist_t apr_reslist_t

Opaque resource list object


Function Documentation

apr_status_t apr_reslist_acquire ( apr_reslist_t reslist,
void **  resource 
)

Retrieve a 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.

apr_uint32_t apr_reslist_acquired_count ( apr_reslist_t reslist  ) 

Return the number of outstanding resources.

Parameters:
reslist The resource list.

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:

Parameters:
reslist An address where the pointer to the new resource list will be stored.
min Allowed minimum number of available resources. Zero creates new resources only when needed.
smax Resources will be destroyed to meet this maximum restriction as they expire.
hmax Absolute maximum limit on the number of total resources.
ttl If non-zero, sets the maximum amount of time a resource may be available while exceeding the soft limit.
con Constructor routine that is called to create a new resource.
de Destructor routine that is called to destroy an expired resource.
params Passed to constructor and deconstructor
pool The pool from which to create this resoure list. Also the same pool that is passed to the constructor and destructor routines.
Warning:
If you're creating a sub-pool of the pool passed into this function in your constructor, you will need to follow some rules when it comes to destruction of that sub-pool, as calling apr_pool_destroy() outright on it in your destructor may create double free situations. That is because by the time destructor is called, the sub-pool may have already been destroyed. This also means that in the destructor, memory from the sub-pool should be treated as invalid. For examples of how to do this correctly, see mod_dbd of Apache 2.2 and memcache support in APR Util 1.3.

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.

Parameters:
reslist The reslist to destroy

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.

apr_status_t apr_reslist_release ( apr_reslist_t reslist,
void *  resource 
)

Return a resource back to the list of available resources.

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.

Parameters:
reslist The resource list.
timeout Timeout to wait. The zero waits forewer.


Generated on Sat Aug 16 19:14:10 2008 for Apache Portable Runtime Utility Library by  doxygen 1.5.6