summaryrefslogtreecommitdiff
path: root/util-misc
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2018-04-03 22:00:10 +0000
committerYann Ylavic <ylavic@apache.org>2018-04-03 22:00:10 +0000
commit7e2b7474590594b59fdc5100c3f99916b3fba416 (patch)
tree10c59a2142a8a4228e0cbe0ea77d6a72c73b4792 /util-misc
parentb65dc8e8c0c66979132bff9162658ef0123e7771 (diff)
downloadapr-7e2b7474590594b59fdc5100c3f99916b3fba416.tar.gz
reslist: Add apr_reslist_fifo_set().
This allows to reuse resources in FIFO mode instead of the default LIFO mode. [Reverted by r1829102] git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1828289 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'util-misc')
-rw-r--r--util-misc/apr_reslist.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/util-misc/apr_reslist.c b/util-misc/apr_reslist.c
index ecc17a7d4..57b583089 100644
--- a/util-misc/apr_reslist.c
+++ b/util-misc/apr_reslist.c
@@ -58,6 +58,7 @@ struct apr_reslist_t {
apr_thread_mutex_t *listlock;
apr_thread_cond_t *avail;
#endif
+ int fifo;
};
/**
@@ -80,7 +81,12 @@ static apr_res_t *pop_resource(apr_reslist_t *reslist)
*/
static void push_resource(apr_reslist_t *reslist, apr_res_t *resource)
{
- APR_RING_INSERT_HEAD(&reslist->avail_list, resource, apr_res_t, link);
+ if (reslist->fifo) {
+ APR_RING_INSERT_TAIL(&reslist->avail_list, resource, apr_res_t, link);
+ }
+ else {
+ APR_RING_INSERT_HEAD(&reslist->avail_list, resource, apr_res_t, link);
+ }
resource->freed = apr_time_now();
reslist->nidle++;
}
@@ -434,6 +440,11 @@ APR_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist,
reslist->timeout = timeout;
}
+APR_DECLARE(void) apr_reslist_fifo_set(apr_reslist_t *reslist, int to)
+{
+ reslist->fifo = to;
+}
+
APR_DECLARE(apr_uint32_t) apr_reslist_acquired_count(apr_reslist_t *reslist)
{
apr_uint32_t count;