package LWP::Protocol::foo; require LWP::Protocol; @ISA=qw(LWP::Protocol);
When creating an instance of this class using
LWP::Protocol::create($url)
, and you get an initialised subclass appropriate for that access method.
In other words, the LWP::Protocol::create() function calls the constructor
for one of its subclasses.
All derived LWP::Protocol classes need to override the
request()
method which is used to service a request. The
overridden method can make use of the collect()
function to
collect together chunks of data as it is received.
$response = $protocol->request($request, $proxy, undef); $response = $protocol->request($request, $proxy, '/tmp/sss'); $response = $protocol->request($request, $proxy, \&callback, 1024);
Dispactches a request over the protocol, and returns a response object. This method needs to be overridden in subclasses. Referer to UserAgent for description of the arguments.
alarm()
function to implement timeouts.
$arg
is
undefined, then the content is stored within the $response. If
$arg
is a simple scalar, then $arg
is interpreted
as a file name and the content is written to this file. If
$arg
is a reference to a routine, then content is passed to
this routine.
The $collector
is a routine that will be called and which is reponsible for returning pieces (as ref to scalar) of the content to process. The $collector
signals
EOF by returning a reference to an empty sting.
The return value from collect()
is the $response
object reference.
Note: We will only use the callback or file argument if $response->is_success(). This avoids sendig content data for redirects and authentization responses to the callback which would be confusing.
collect()
with a collector callback that
returns a reference to $content
the first time and an empty
string the next.