NAME

Term::MultiSpinner - Term::Spinner with multiple spinners

SYNOPSIS

use Term::MultiSpinner;

my $spinner = Term::MultiSpinner->new();
while(... a complicated async loop ...) {
    if(... can read some data ...) {
        $spinner->advance(0);
        # read stuff
        $spinner->finish(0) if $done_reading;
    }
    if(... can write some data ...) {
        $spinner->advance(1);
        # write stuff
        $spinner->finish(1) if $done_writing;
    }
}
undef $spinner; # clears final spinner output by default.

DESCRIPTION

This is a subclass of Term::Spinner, see those docs first.

This class provides multiple spinners on the same line, to represent the state of several asynchronous long-running tasks. Ideal for a complex select-based loop, a POE process, etc.

Another good place to use it is if you have a long queue of short tasks to complete and can only do a small number in parallel at a time. Use the first spinner to indicate when a task is taken from the queue and started, and the second spinner to indicate task completion.

The docs below only indicate deviations from the interface of Term::Spinner, see those docs for the basic information.

METHODS

clear

draw

advance

Requires an argument, which is the integer spinner slot to advance. The first spinner is 0. The number of spinners on the screen will always automagically expand to include the entire range of 0 through the highest number you've directly accessed.

finish

Requires an argument, which is the integer spinner slot to finish. The first spinner is 0. The number of spinners on the screen will always automagically expand to include the entire range of 0 through the highest number you've directly accessed.

advance_all

Calls "advance" on all spinners.

finish_all

Calls "finish" on all spinners.

AUTHOR

Brandon L. Black, <blblack@gmail.com>

COPYRIGHT AND LICENSE

Copyright 2007 Brandon L. Black

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