home *** CD-ROM | disk | FTP | other *** search
- #
- # /*
- # * *********** WARNING **************
- # * This file generated by ModPerl::WrapXS/0.01
- # * Any changes made here will be lost
- # * ***********************************
- # * 01: lib/ModPerl/Code.pm:701
- # * 02: O:\147xampp\sources\mod_perl-1.99_16\blib\lib/ModPerl/WrapXS.pm:584
- # * 03: O:\147xampp\sources\mod_perl-1.99_16\blib\lib/ModPerl/WrapXS.pm:1100
- # * 04: Makefile.PL:335
- # * 05: Makefile.PL:283
- # * 06: Makefile.PL:51
- # */
- #
-
-
- package APR::Brigade;
-
- use strict;
- use warnings FATAL => 'all';
-
-
- use APR ();
- use APR::XSLoader ();
- our $VERSION = '0.01';
- APR::XSLoader::load __PACKAGE__;
-
-
-
- 1;
- __END__
-
- =head1 NAME
-
- APR::Brigade - Perl API for manipulating APR Bucket Brigades
-
-
-
-
- =head1 Synopsis
-
- use APR::Brigade ();
-
- $bb = APR::Brigade->new($r->pool, $c->bucket_alloc);
- $pool = $bb->pool;
-
- $bb->insert_head($b);
- $bb->insert_tail($b);
-
- $b_first = $bb->first;
- $b_last = $bb->last;
-
- $b_prev = $bb->prev($b_last);
- $b_next = $bb->next($b);
-
- $bb2 = APR::Brigade->new($r->pool, $c->bucket_alloc);
- $bb1->concat($bb2);
-
- $len = $bb->flatten($data);
- $len = $bb2->flatten($data, $wanted);
-
- $len = $bb->length;
- $bb3 = $bb->split($b_last);
-
- last if $bb->is_empty();
- $bb->cleanup();
- $bb->destroy();
-
-
-
-
-
-
-
-
-
- =head1 Description
-
- C<APR::Brigade> allows you to create, manipulate and delete APR bucket
- brigades.
-
-
-
-
-
-
- =head1 API
-
- C<APR::Brigade> provides the following functions and/or methods:
-
-
- =head2 C<cleanup>
-
- Empty out an entire bucket brigade:
-
- $bb->cleanup;
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The brigade to cleanup
-
- =item ret: no return value
-
- =item since: 1.99_15
-
- =back
-
- This method destroys all of the buckets within the bucket brigade's
- bucket list. This is similar to C<L<destroy()|/C_destroy_>>, except
- that it does not deregister the brigade's C<L<pool()|/C_pool_>>
- cleanup function.
-
- Generally, you should use C<L<destroy()|/C_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.
-
-
-
-
-
-
-
-
-
- =head2 C<concat>
-
- Concatenate brigade C<$bb2> onto the end of brigade C<$bb1>, leaving
- brigade C<$bb2> empty:
-
- $bb1->concat($bb2);
-
- =over 4
-
- =item obj: C<$bb1>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The brigade to concatenate to.
-
- =item arg1: C<$bb2>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The brigade to concatenate and empty afterwards.
-
- =item ret: no return value
-
- =item since: 1.99_10
-
- =back
-
-
-
-
- =head2 C<destroy>
-
- destroy an entire bucket brigade, includes all of the buckets within
- the bucket brigade's bucket list.
-
- $bb->destroy();
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The bucket brigade to destroy.
-
- =item ret: no return value
-
- =item excpt: C<L<APR::Error|docs::2.0::api::APR::Error>>
-
- =item since: 1.99_15
-
- =back
-
-
-
-
-
- =head2 C<is_empty>
-
- Test whether the bucket brigade is empty
-
- $ret = $bb->is_empty();
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item ret: C<$ret> ( boolean )
-
- =item since: 1.99_15
-
- =back
-
-
-
-
-
-
-
-
- =head2 C<first>
-
- Return the first bucket in a brigade
-
- $b_first = $bb->first;
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item ret: C<$b_first>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The first bucket in the bucket brigade C<$bb>.
-
- C<undef> is returned if there are no buckets in C<$bb>.
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
-
- =head2 C<flatten>
-
- Get the data from buckets in the bucket brigade as one string
-
- $len = $bb->flatten($buffer);
- $len = $bb->flatten($buffer, $wanted);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item arg1: C<$buffer> ( SCALAR )
-
- The buffer to fill. All previous data will be lost.
-
- =item opt arg2: C<$wanted> ( number )
-
- If no argument is passed then all data will be returned. If C<$wanted>
- is specified -- that number or less bytes will be returned.
-
- =item ret: C<$len> ( number )
-
- How many bytes were actually read.
-
- C<$buffer> gets populated with the string that is read. It will
- contain an empty string if there was nothing to read.
-
-
- =item since: 1.99_15
-
- =item excpt: C<L<APR::Error|docs::2.0::api::APR::Error>>
-
- =back
-
-
-
-
-
-
-
- =head2 C<insert_head>
-
- Insert a list of buckets at the front of a brigade
-
- $bb->insert_head($b);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- Brigade to insert into
-
- =item arg1: C<$b>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- the bucket to insert. More buckets could be attached to that bucket.
-
- =item ret: no return value
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
- =head2 C<insert_tail>
-
- Insert a list of buckets at the end of a brigade
-
- $bb->insert_tail($b);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- Brigade to insert into
-
- =item arg1: C<$b>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- the bucket to insert. More buckets could be attached to that bucket.
-
- =item ret: no return value
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
-
- =head2 C<last>
-
- Return the last bucket in the brigade
-
- $b_last = $bb->last;
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item ret: C<$b_last>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The last bucket in the bucket brigade C<$bb>.
-
- C<undef> is returned if there are no buckets in C<$bb>.
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
- =head2 C<length>
-
- Return the total length of the data in the brigade (not the number of
- buckets)
-
- $len = $bb->length;
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item ret: C<$len> ( number )
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
-
- =head2 C<new>
-
- my $nbb = APR::Brigade->new($p, $bucket_alloc);
- my $nbb = $bb->new($p, $bucket_alloc);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object or class|docs::2.0::api::APR::Brigade>> )
-
- =item arg1: C<$p>
- ( C<L<APR::Pool object|docs::2.0::api::APR::Pool>> )
-
- =item arg2: C<$bucket_alloc>
- ( C<L<APR::BucketAlloc object|docs::2.0::api::APR::BucketAlloc>> )
-
- =item ret: C<$nbb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- a newly created bucket brigade object
-
- =item since: 1.99_10
-
- =back
-
- Example:
-
- Create a new bucket brigade, using the request object's pool:
-
- use Apache::Connection ();
- use Apache::RequestRec ();
- use APR::Brigade ();
- my $bb = APR::Brigade->new($r->pool, $r->connection->bucket_alloc);
-
-
-
-
-
-
- =head2 C<next>
-
- Return the next bucket in a brigade
-
- $b_next = $bb->next($b);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item arg1: C<$b>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The bucket after which the next bucket C<$b_next> is located
-
- =item ret: C<$b_next>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The next bucket after bucket C<$b>.
-
- C<undef> is returned if there is no next bucket (i.e. C<$b> is the
- last bucket).
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
-
- =head2 C<pool>
-
- The pool the brigade is associated with.
-
- $pool = $bb->pool;
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item ret: C<$pool>
- ( C<L<APR::Pool object|docs::2.0::api::APR::Pool>> )
-
- =item since: 1.99_10
-
- =back
-
- The data is not allocated out of the pool, but a cleanup is registered
- with this pool. If the brigade is destroyed by some mechanism other
- than pool destruction, the destroying function is responsible for
- killing the registered cleanup.
-
-
-
-
-
-
-
-
- =head2 C<prev>
-
- Return the previous bucket in the brigade
-
- $b_prev = $bb->prev($b);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- =item arg1: C<$b>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The bucket located after bucket C<$b_prev>
-
- =item ret: C<$b_prev>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The bucket located before bucket C<$b>.
-
- C<undef> is returned if there is no previous bucket (i.e. C<$b> is the
- first bucket).
-
- =item since: 1.99_10
-
- =back
-
-
-
-
-
-
-
-
- =head2 C<split>
-
- Split a bucket brigade into two, such that the given bucket is the
- first in the new bucket brigade.
-
- $bb2 = $bb->split($b);
-
- =over 4
-
- =item obj: C<$bb>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The brigade to split
-
- =item arg1: C<$b>
- ( C<L<APR::Bucket object|docs::2.0::api::APR::Bucket>> )
-
- The first bucket of the new brigade
-
- =item ret: C<$bb2>
- ( C<L<APR::Brigade object|docs::2.0::api::APR::Brigade>> )
-
- The new brigade.
-
- =item since: 1.99_10
-
- =back
-
- This function is useful when a filter wants to pass only the initial
- part of a brigade to the next filter.
-
- Example:
-
- Create a bucket brigade with three buckets, and split it into two
- brigade such that the second brigade will have the last two buckets.
-
- my $bb1 = APR::Brigade->new($r->pool, $c->bucket_alloc);
- $bb1->insert_tail(APR::Bucket->new("1"));
- $bb1->insert_tail(APR::Bucket->new("2"));
- $bb1->insert_tail(APR::Bucket->new("3"));
-
- C<$bb1> now contains buckets "1", "2", "3". Now do the split at the
- second bucket:
-
- my $b = $bb1->first; # 1
- $b = $bb1->next($b); # 2
- my $bb2 = $bb1->split($b);
-
- Now C<$bb1> contains bucket "1". C<$bb2> contains buckets: "2", "3"
-
-
-
-
-
- =head1 See Also
-
- L<mod_perl 2.0 documentation|docs::2.0::index>.
-
-
-
-
- =head1 Copyright
-
- mod_perl 2.0 and its core modules are copyrighted under
- The Apache Software License, Version 2.0.
-
-
-
-
- =head1 Authors
-
- L<The mod_perl development team and numerous
- contributors|about::contributors::people>.
-
- =cut
-
-