The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

             Parallel User Agent
                        ---------------------

(c) 1997-2004 Marc Langheinrich <marclang@cpan.org>

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

   Disclaimer
   ----------
   Unfortunately, I have very little time to maintain this
   module. Though I eventually get around to update it every
   so often, please be aware that the level of support and
   quality for this Perl module is somewhat less than what you
   might expect from official CPAN releases :-(


1. What is it?
--------------
ParallelUserAgent (or PUA for short) is an extension of the existing
libwww-5.x distribution. It allows you to connect to download several
Web pages in _parallel_, without having to request each page one after
the other. 

Instead of retrieving each single page using LWP::UserAgent::request
or ::simple_request methods, you first "register" all pages that you
wish to download in parallel and then call PUA's "wait" method, which
will then make all the necessary connections and download the
pages. 

You can define callback routines which will be called whenever a
connection is established, is cut off, new data comes in or a request
finishes. The subroutines can be global for all requests you
registered, or different for every single request. 

Callbacks for example allow you to print status updates as the
responses come in, or even immediately post follow-up requests based
on the responses, all within the same single "wait" cycle.

2. How to install it?
---------------------

PUA comes with an out-of-the-box installation setup. All you have to do 
is the usual

perl Makefile.PL
make
make test
make install

Previous versions of PUA asked you to replace a few standard modules
that came with libwww5.x. As of version 2.30, PUA will install all of
its modules into the LWP::Parallel subtree, so that your previous
libwww installation remains unchanged!

However, it also requires the latest version of the libwww that it has
been tested against. Earlier (or later) version might work, too, but
you are on your own there. If you are using a different version then
the ones listed below, either upgrade to the latest tested libwww
distribution, or try running the testscript ("make test") and see if
it tests ok anyways :-)

Checked versions so far:

    libwww-5.76                 use ParallelUA-2.57

    libwww-5.66 - 5.69          untested
    libwww-5.64 - 5.65          use ParallelUA-2.55
    libwww-5.60 - 5.63          use ParallelUA-2.54
    libwww-5.52 - 5.53          use ParallelUA-2.51
    libwww-5.48 - 5.51          use ParallelUA-2.50
    libwww-5.44 - 5.47          untested (use 2.43)
    libwww-5.41 - 5.43          use ParallelUA-2.43
    libwww-5.20 - 5.36          use up to ParallelUA-2.39
    libwww-5.19                 untested
    libwww-5.18 and below       not ok!

Note: For optimal performance you shoud use the _latest_ version of BOTH
      libwww-perl (i.e. 5.76) and ParallelUserAgent (i.e. 2.57).

3. How to use it?
-----------------
The current distribution unfortunately has very little documentation
:-( So far I'm happy that I can keep up with Gisle's constant output
of new versions of libwww and haven't had much time to think about
proper documentation.

For starters, you should look into the t/ subdirectory in this
distribution for some examples on how to use this library! Some brief
explanations and examples can also be found in the LWP/Parallel.pm
file -- you can use "perldoc LWP::Parallel" after you installed this
module to view the embedded documentation.

Most of the other modules also come with some brief description of
their interfaces which can be viewed using "perldoc <Modulename>".


4. Remarks for users upgrading from ParallelUA 2.20:
---------------------------------------------------- 

You should start out by installing a clean copy of the latest
libwww-5.x package, which should overwrite any existing PUA modules
which used to replace some of the LWP modules. 

The new PUA distribution will still offer the LWP::ParallelUA and
LWP::RobotPUA modules for backward compatibility, but you are
encouraged to start any new projects using the "local" modules now
residing under the LWP::Parallel subtree, namely
LWP::Parallel::UserAgent and LWP::Parallel::RobotUA.

The old "TestScript.pl" that used to come with versions 2.20 and below
can be found in t/TestScript.pl and can be used to check backward
compatibility (or can also be used to get a somewhat bigger example on
how to use this module).
 

5. Questions, comments, etc.
----------------------------

Question about how to use the underlying LWP library should be
directed to the comp.lang.perl.modules USENET Newsgroup.  

Bug reports and suggestions for improvements can be sent to the
<libwww-perl@ics.uci.edu> mailing list.  This mailing list is also the
place for general discussions and development of the libwww-perl
package. 

You can join the mailing list by sending a message to
<libwww-perl-request@ics.uci.edu> with "Subscribe" as subject.
            ^^^^^^^^


COPYRIGHT

  © 1997-2004 Marc Langheinrich. All rights reserved.

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


Have fun!

--
$Revision: 1.20 $