úÎ0 .¼  portable experimental%Bryan O'Sullivan <bos@serpentine.com>None 4Action for creating a new entry to add to the pool. 6Action for destroying an entry that is now done with. =Stripe count. The number of distinct sub-pools to maintain. % The smallest acceptable value is 1. ;Amount of time for which an unused resource is kept alive. / The smallest acceptable value is 0.5 seconds. <The elapsed time before closing may be a little longer than > requested, as the reaper thread wakes at 1-second intervals. 9Maximum number of resources to maintain per stripe. The ! smallest acceptable value is 1. @Requests for resources will block if this limit is reached on a : single stripe, even if other stripes have idle resources  available. Per-capability resource pools. A single striped pool. .Count of open entries (both idle and in use). Idle entries. A single resource pool entry. Time of last return. >Periodically go through all pools, closing any resources that # have been left idle for too long. #Temporarily take a resource from a , perform an action with + it, and return it to the pool afterwards. 8 If the pool has an idle resource available, it is used  immediately. @ Otherwise, if the maximum number of resources has not yet been 0 reached, a new resource is created and used. ; If the maximum number of resources has been reached, this 7 function blocks until a resource becomes available. ?If the action throws an exception of any type, the resource is * destroyed, and not returned to the pool. ?It probably goes without saying that you should never manually D destroy a pooled resource, as doing so will almost certainly cause C a subsequent user (who expects the resource to be valid) to throw  an exception. =Take a resource from the pool, following the same results as  :. Note that this function should be used with caution, as ; improper exception handling can lead to leaked resources. .This function returns both a resource and the  LocalPool it came from so & that it may either be destroyed (via ) or returned to the  pool (via  ). EDestroy a resource. Note that this will ignore any exceptions in the  destroy function. Return a resource to the given .    $Action that creates a new resource. +Action that destroys an existing resource. =Stripe count. The number of distinct sub-pools to maintain. % The smallest acceptable value is 1. :Amount of time for which an unused resource is kept open. / The smallest acceptable value is 0.5 seconds. >The elapsed time before destroying a resource may be a little ? longer than requested, as the reaper thread wakes at 1-second  intervals. :Maximum number of resources to keep open per stripe. The ! smallest acceptable value is 1. @Requests for resources will block if this limit is reached on a : single stripe, even if other stripes have idle resources  available.              resource-pool-0.2.1.1 Data.PoolPool numStripesidleTime maxResources LocalPool createPool withResource takeResourcedestroyResource putResourcecreatedestroy localPoolsinUseentriesEntrylastUsereaperentry modifyTVar_modError $fShowPool