ProgressMonitor
This is a release of ProgressMonitor, a generic, flexible and extendable OO
framework for using the notion of giving feedback (to a user, commonly) that a
long-running task is actually doing something (and preferably tell how much of
the task remains).
A piece of code that does a task declares that it takes a progress monitor
instance. When/if given one, it will report progress in a defined and generic
manner. If its task requires using other sub-tasks, the task can farm out a
piece of its work to the sub-task, using a new progress monitor, and still have
overall correct reporting.
The type of progress monitor given to the top task has the option to provide
the (user) feedback in any manner it so chooses (indeed, if any - a 'null'
monitor is perfectly legal).
Primarily, the interface is concerned with 'ticks' or 'heartbeats' from the
working code. If the amount of work was known beforehand, then these ticks will
help compute remaining work and present this in a number of ways. A secondary
part of the interface also allows work code to provide messages (typically short
ones, they will be cut if they won't fit in the provided space) on what it is
doing. The monitor can decide to show or not show this, and if it shows it, it
can do so in a couple of ways - perhaps as new lines, or overlaying the ordinary
field(s).
Included in the package is two main variants of monitors, both of which deals
with reporting using strings. Special monitors for 'null' use and for subtasks
is also provided.
One of the string based monitors simply prints the string on a stream, the other
uses a callback to allow the client to do whatever it wish with the string. The
strings produced can be of a variety of types ('fields'), and even complex
combinations.
If none of the provided monitors/fields suits you, inherit from the provided
interfaces/implementations and roll your own!
INSTALLATION
ProgressMonitor definitively requires the pragma 'classes' to be installed
(minimum version 0.943). I believe the rest is standard...but as I have little
else to test on, as well as the fact that some could be version specific, I
could be wrong - please drop me a line so I can update this text or do something
otherwise intelligent about it).
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the perldoc command.
perldoc ProgressMonitor
You can also look for information at:
Search CPAN
http://search.cpan.org/dist/ProgressMonitor
CPAN Request Tracker:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=ProgressMonitor
AnnoCPAN, annotated CPAN documentation:
http://annocpan.org/dist/ProgressMonitor
CPAN Ratings:
http://cpanratings.perl.org/d/ProgressMonitor
COPYRIGHT AND LICENCE
Copyright (C) 2006,2007,2008 Kenneth Olwing
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.