You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Cliff Woolley <cl...@yahoo.com> on 2001/04/02 00:25:10 UTC
apr_brigade_cleanup()
Does anybody have any problem with me exposing apr_brigade_cleanup() as a
public function? It would not replace apr_brigade_destroy(), but it's
useful in some situations (eg Apache's mod_include) where there's a single
brigade object that you'd like to reuse by cleaning it out and putting
more buckets in it later. mod_include does this already with the brigade
it keeps in its ctx... the availability of apr_brigade_cleanup() to it
would reduce unnecessary code verbosity. The alternative, of course, is
to say that callers doing this should destroy the brigade when they want
to clean up and create a new one in its place, but that seems like a
waste of cycles and memory to me.
--Cliff
Index: buckets/apr_brigade.c
===================================================================
RCS file: /home/cvs/apr-util/buckets/apr_brigade.c,v
retrieving revision 1.12
diff -u -d -r1.12 apr_brigade.c
--- buckets/apr_brigade.c 2001/02/28 17:35:42 1.12
+++ buckets/apr_brigade.c 2001/04/01 22:18:41
@@ -67,7 +67,7 @@
#include <sys/uio.h>
#endif
-static apr_status_t apr_brigade_cleanup(void *data)
+APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
{
apr_bucket_brigade *b = data;
apr_bucket *e;
@@ -85,6 +85,7 @@
*/
return APR_SUCCESS;
}
+
APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b)
{
apr_pool_cleanup_kill(b->p, b, apr_brigade_cleanup);
Index: include/apr_buckets.h
===================================================================
RCS file: /home/cvs/apr-util/include/apr_buckets.h,v
retrieving revision 1.87
diff -u -d -r1.87 apr_buckets.h
--- include/apr_buckets.h 2001/03/01 04:46:13 1.87
+++ include/apr_buckets.h 2001/04/01 22:18:42
@@ -589,6 +589,20 @@
APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b);
/**
+ * empty out an entire bucket brigade. This includes destroying all of the
+ * buckets within the bucket brigade's bucket list. This is similar to
+ * apr_brigade_destroy(), except that it does not deregister the brigade's
+ * pool cleanup function.
+ * @tip Generally, you should use apr_brigade_destroy(). This function
+ * can be useful in situations where you have a single brigade that
+ * you wish to reuse many times by destroying all of the buckets in
+ * the brigade and putting new buckets into it later.
+ * @param b The bucket brigade to clean up
+ * @deffunc apr_status_t apr_brigade_cleanup(apr_bucket_brigade *b)
+ */
+APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data);
+
+/**
* Split a bucket brigade into two, such that the given bucket is the
* first in the new bucket brigade. This function is useful when a
* filter wants to pass only the initial part of a brigade to the next
--------------------------------------------------------------
Cliff Woolley
cliffwoolley@yahoo.com
Charlottesville, VA