my $TEXT = qr/[^[:cntrl:]]/o; my $qdtext = qr/[^[:cntrl:]\"]/o; #<any TEXT except <">> my $quoted_pair = qr/\\[[:ascii:]]/o; my $quoted_string = qr/\"(?:$qdtext|$quoted_pair)\"/o; my $separators = "[^()<>@,;:\\"\/\[\]\?={} \t"; my $notoken = qr/(?:[[:cntrl:]$separators]/o;
my $chunk_ext_name = $token; my $chunk_ext_val = qr/(?:$token|$quoted_string)/o;
my $chunk_extension = qr/(?:;$chunk_ext_name(?:$chunk_ext_val)?)/o;
sub put { die "not implemented yet"; }
POE::Filter::HTTPChunk - Non-blocking incremental HTTP chunk parser.
# Not a complete program. use POE::Filter::HTTPChunk; use POE::Wheel::ReadWrite; sub setup_io { $_[HEAP]->{io_wheel} = POE::Wheel::ReadWrite->new( Filter => POE::Filter::HTTPChunk->new(), # See POE::Wheel::ReadWrite for other required parameters. ); }
This filter parses HTTP chunks from a data stream. It's used by POE::Component::Client::HTTP to do the bulk of the low-level HTTP parsing.
new
takes no parameters and returns a shiny new
POE::Filter::HTTPChunk object ready to use.
POE::Filter::HTTPChunk supports the following methods. Most of them adhere to the standard POE::Filter API. The documentation for POE::Filter explains the API in more detail.
Accept an arrayref containing zero or more raw data chunks. They are added to the filter's input buffer. The filter will attempt to parse that data when get_one() is called.
$filter_httpchunk->get_one_start(\@stream_data);
Parse a single HTTP chunk from the filter's input buffer. Data is entered into the buffer by the get_one_start() method. Returns an arrayref containing zero or one parsed HTTP chunk.
$ret_arrayref = $filter_httpchunk->get_one();
Returns an arrayref of stream data currently pending parsing. It's used to seamlessly transfer unparsed data between an old and a new filter when a wheel's filter is changed.
$pending_arrayref = $filter_httpchunk->get_pending();
None are known at this time.
POE::Filter::HTTPChunk is...
All rights are reserved. POE::Filter::HTTPChunk is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
Rocco may be contacted by e-mail via mailto:rcaputo@cpan.org, and Martijn may be contacted by email via mailto:martijn@cpan.org.
The preferred way to report bugs or requests is through RT though. See http://rt.cpan.org/NoAuth/Bugs.html?Dist=POE-Component-Client-HTTP or mail mailto:bug-POE-Component-Client-HTTP@rt.cpan.org
For questions, try the POE mailing list (poe@perl.org)