NAME

Async::Simple::Task - base class for asyncronous task packages

SYNOPSIS

    use Async::Simple::Task::ChildPkg;

    my $task = Async::Simple::Task::ChildPkg->new( %params );      # Creates a task, which waits for data and doing something with it

    $task->put( $data );                                           # Put a task data to task

    # ...do something useful in parent while our data working ...

    my $result = $task->get; # result = undef because result is not ready yet
    sleep $timeout; # or do something else....
    my $result = $task->get; # your result

    $task->put( $data );                                           # Put another data and so on,....

Result and data can be of any type you wish.

If your "get" can return undef as result, you should check $task->has_result, as a mark that result is ready.

DESCRIPTION

Allows to initialize async process.

After that, puts to him many similar packs of data one after other.

METHODS

new

Initialize async task routine.

    my $task = Async::Simple::Task::ChildPkg->new( %optional_params );

put

Puts data to task

    $self->put( $data );

get

Tries to read result from task.

Returns result or undef in case when result is not ready.

In case, your function can return undef as result, you shoud check $task->has_answer, as a mark of ready result.

    my $result = $self->get();

SUPPORT AND DOCUMENTATION

    After installing, you can find documentation for this module with the perldoc command.

    perldoc Async::Simple::Task

    You can also look for information at:

        RT, CPAN's request tracker (report bugs here)
            http://rt.cpan.org/NoAuth/Bugs.html?Dist=Async-Simple-Task

        AnnoCPAN, Annotated CPAN documentation
            http://annocpan.org/dist/Async-Simple-Task

        CPAN Ratings
            http://cpanratings.perl.org/d/Async-Simple-Task

        Search CPAN
            http://search.cpan.org/dist/Async-Simple-Task/

AUTHOR

ANTONC <antonc@cpan.org>

LICENSE

    This program is free software; you can redistribute it and/or modify it
    under the terms of the the Artistic License (2.0). You may obtain a
    copy of the full license at:

    L<http://www.perlfoundation.org/artistic_license_2_0>

Attributes

get

    my $result = $task->get;

Reads from task, if something can be readed or returns undef after timeout.

You should override this.

put

    $task->put( $data );

Makes task.

You should override this.

answer

Result of current task

has_answer

has_answer is true, if the task has been finished and result is ready.

timeout

timeout - positive numeric value = seconds between checking for result

id

Index of current task task.

This fields is just for your purpose, it is not intersected with any of internal logic.

Use id as a unique marker of task, in casw when you have a list of similar tasks.