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.

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.