Philippe Bruhat (BooK) > HTTP-Proxy > HTTP::Proxy::FilterStack

Download:
HTTP-Proxy-0.24.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  9
Open  4
View Bugs
Report a bug
Source  

NAME ^

HTTP::Proxy::FilterStack - A class to manage filter stacks

DESCRIPTION ^

This class is used internally by HTTP::Proxy to manage its four filter stacks.

From the point of view of HTTP::Proxy::FilterStack, a filter is actually a (matchsub, filterobj) pair. The match subroutine (generated by HTTP::Proxy's push_filter() method) is run against the current HTTP::Message object to find out which filters must be kept in the stack when handling this message.

The filter stack maintains a set of buffers where the filters can store data. This data is appended at the beginning of the next chunk of data, until all the data has been sent.

METHODS ^

The class provides the following methods:

new( $isbody )

Create a new instance of HTTP::Proxy::FilterStack. If $isbody is true, then the stack will manage body filters (subclasses of HTTP::Proxy::BodyFilter).

select_filters( $message )

$message is the current HTTP::Message handled by the proxy. It is used (with the help of each filter's match subroutine)

filter( @args )

This method calls all the currently selected filters in turn, with the appropriate arguments.

filter_last()

This method calls all the currently selected filters in turn, to filter the data remaining in the buffers in a single pass.

will_modify()

Return a boolean value indicating if the list of selected filters in the stack will modify the body content. The value is computed from the result of calling will_modify() on all selected filters.

all()

Return a list of all filters in the stack.

eod()

Used for END OF DATA bookkeeping.

push()

Push the given [ match, filterobj ] pairs at the top of the stack.

insert( $idx, @pairs )

Insert the given [ match, filterobj ] pairs at position $idx in the stack.

remove( $idx )

Remove the [ match, filterobj ] pair at position $idx in the stack.

AUTHOR ^

Philippe "BooK" Bruhat, <book@cpan.org>.

COPYRIGHT ^

Copyright 2002-2006, Philippe Bruhat.

LICENSE ^

This module is free software; you can redistribute it or modify it under the same terms as Perl itself.