NAME
   AnyEvent::Worker - Manage blocking task in external process

SYNOPSIS
       use AnyEvent 5;
       use AnyEvent::Worker;

       my $worker1 = AnyEvent::Worker->new( [ 'Actual::Worker::Class' => @init_args ] );
       my $worker2 = AnyEvent::Worker->new( sub { return "Cb 1 @_"; } );
       my $worker3 = AnyEvent::Worker->new( {
           class   => 'Actual::Worker::Class2',
           new     => 'create', # alternative constructor
           args    => [qw(arg1 arg2)],
       } );

       # Invoke method `test' on Actual::Worker::Class with arguments @args
       $worker1->do( test => @args , sub {
           return warn "Request died: $@" if $@;
           warn "Received response: @_";
       });

       # Just call callback, passed to worker2 with arguments @args
       $worker2->do( @args , sub {
           return warn "Request died: $@" if $@;
           warn "Received response: @_";
       });

CONSTRUCTOR
 new $cb->($req), %args
   Simple stateless worker. On any "do" a sub sill be invoked with "do"
   arguments

 new [ Class => @new_args ], %args
   Stateful, object-based worker. After fork, Class will we "use"d, then
   instantiated with new(@new_args).

   First argument to "do" will be interpreted as object method, rest -- as
   method arguments.

 new { class => 'Class', args => \@new_args, new => 'constructor_method' }, %args
   Same as previous, but allow to pass optional constructor name in "new"
   arg

 $args{on_error} = $cb->($worker,$error,$fatal,$file,$line)
   When an unexpected error occurs (for ex: child process exited or killed)
   "on_error" callback will be invoked

METHODS
 do @args, $cb->($res)
   Only for stateless worker.

 do method => @args, $cb->($res)
   Only for stateful worker.

METHODS
   $worker->on_error ($cb->($worker, $filename, $line, $fatal))
       Sets (or clears, with "undef") the "on_error" handler.

   $worker->timeout ($seconds)
       Sets (or clears, with "undef") the database timeout. Useful to
       extend the timeout when you are about to make a really long query.

   $worker->do ( @args, $cb->( $worker, @response ) )
       Executes worker code and execure the callback, when response is
       ready

AUTHOR
   Mons Anderson, "<[email protected]>"

ACKNOWLEDGEMENTS
   This module based on Marc Lehmann's AnyEvent::DBI

   Thanks to Vladimir Timofeev "<[email protected]>" for bugfixes and useful
   notes