24#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG)
54#define APR_BUCKET_BUFF_SIZE 8000
289#ifdef APR_BUCKET_DEBUG
291#define APR_BRIGADE_CHECK_CONSISTENCY(b) \
292 APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link)
294#define APR_BUCKET_CHECK_CONSISTENCY(e) \
295 APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link)
304#define APR_BRIGADE_CHECK_CONSISTENCY(b)
311#define APR_BUCKET_CHECK_CONSISTENCY(e)
331#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link)
338#define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link)
345#define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list)
351#define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list)
358#define APR_BRIGADE_INSERT_HEAD(b, e) do { \
359 apr_bucket *ap__b = (e); \
360 APR_RING_INSERT_HEAD(&(b)->list, ap__b, apr_bucket, link); \
361 APR_BRIGADE_CHECK_CONSISTENCY((b)); \
369#define APR_BRIGADE_INSERT_TAIL(b, e) do { \
370 apr_bucket *ap__b = (e); \
371 APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \
372 APR_BRIGADE_CHECK_CONSISTENCY((b)); \
380#define APR_BRIGADE_CONCAT(a, b) do { \
381 APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \
382 APR_BRIGADE_CHECK_CONSISTENCY((a)); \
390#define APR_BRIGADE_PREPEND(a, b) do { \
391 APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \
392 APR_BRIGADE_CHECK_CONSISTENCY((a)); \
400#define APR_BUCKET_INSERT_BEFORE(a, b) do { \
401 apr_bucket *ap__a = (a), *ap__b = (b); \
402 APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \
403 APR_BUCKET_CHECK_CONSISTENCY(ap__a); \
411#define APR_BUCKET_INSERT_AFTER(a, b) do { \
412 apr_bucket *ap__a = (a), *ap__b = (b); \
413 APR_RING_INSERT_AFTER(ap__a, ap__b, link); \
414 APR_BUCKET_CHECK_CONSISTENCY(ap__a); \
422#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link)
428#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link)
434#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link)
440#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link)
448#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata)
455#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush)
461#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos)
467#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file)
473#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe)
479#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket)
485#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap)
491#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient)
497#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal)
504#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap)
511#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool)
650#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs))
999#define apr_bucket_destroy(e) do { \
1000 apr_bucket *apr__d = (e); \
1001 apr__d->type->destroy(apr__d->data); \
1002 apr__d->free(apr__d); \
1016#define apr_bucket_delete(e) do { \
1017 apr_bucket *apr__b = (e); \
1018 APR_BUCKET_REMOVE(apr__b); \
1019 apr_bucket_destroy(apr__b); \
1089#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block)
1097#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p)
1109#define apr_bucket_split(e,point) (e)->type->split(e, point)
1116#define apr_bucket_copy(e,c) (e)->type->copy(e, c)
APR Miscellaneous library routines.
APU_DECLARE(void)
Computes SipHash-2-4, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIP...
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_pipe
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_transient
apr_bucket_brigade apr_read_type_e apr_off_t maxbytes
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_socket
apr_brigade_flush void const char apr_size_t nbyte
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_eos
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_flush
apr_file_t apr_off_t apr_off_t apr_pool_t * p
apr_file_t apr_off_t start
apr_brigade_flush void * ctx
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_pool
APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list)
apr_size_t void(* free_func)(void *data)
apr_brigade_flush void const char * str
apr_brigade_flush void apr_brigade_flush void const char * fmt
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_file
apr_bucket apr_bucket_brigade * a
char apr_size_t apr_pool_t * pool
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_immortal
apr_off_t apr_bucket ** after_point
apr_bucket_brigade apr_read_type_e block
APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_heap
apr_bucket_alloc_t * list
apr_bucket_brigade * bbIn
apr_status_t(* apr_brigade_flush)(apr_bucket_brigade *bb, void *ctx)
apr_brigade_flush void va_list va
apr_abortfunc_t apr_allocator_t * allocator
const char apr_status_t(*) apr_pool_t *poo __attribute__)((nonnull(2, 4)))
#define APR_RING_ENTRY(elem)
#define APR_RING_HEAD(head, elem)
apr_bucket_alloc_t * bucket_alloc
struct apr_bucket_brigade::apr_bucket_list list
apr_bucket_refcount refcount
apr_bucket_refcount refcount
void(* free_func)(void *data)
apr_bucket_alloc_t * list
apr_status_t(* split)(apr_bucket *e, apr_size_t point)
apr_status_t(* copy)(apr_bucket *e, apr_bucket **c)
apr_status_t(* read)(apr_bucket *b, const char **str, apr_size_t *len, apr_read_type_e block)
enum apr_bucket_type_t::@65 is_metadata
apr_status_t(* setaside)(apr_bucket *e, apr_pool_t *pool)
void(* destroy)(void *data)
apr_bucket_alloc_t * list
const apr_bucket_type_t * type
struct apr_bucket::@66 link