NAME
Mail::SpamAssassin::Timeout - safe, reliable timeouts in perl
SYNOPSIS
# non-timeout code...
my $t = Mail::SpamAssassin::Timeout->new({ secs => 5 });
$t->run(sub {
# code to run with a 5-second timeout...
});
if ($t->timed_out()) {
# do something...
}
# more non-timeout code...
DESCRIPTION
This module provides a safe, reliable and clean API to provide alarm(2)-based timeouts for perl code.
Note that $SIG{ALRM} is used to provide the timeout, so this will not interrupt out-of-control regular expression matches.
Nested timeouts are supported.
PUBLIC METHODS
- my $t = Mail::SpamAssassin::Timeout->new({ ... options ... });
-
Constructor. Options include:
- $t->run($coderef)
-
Run a code reference within the currently-defined timeout.
The timeout is as defined by the secs parameter to the constructor.
Returns whatever the subroutine returns, or
undefon timeout. If the timer times out,$t-<gttimed_out()> will return1.Time elapsed is not cumulative; multiple runs of
runwill restart the timeout from scratch. - $t->run_and_catch($coderef)
-
Run a code reference, as per
$t-<gtrun()>, but also catching anydie()calls within the code reference.Returns
undefif nodie()call was executed and$@was unset, or the value of$@if it was set. (The timeout event doesn't count as adie().) - $t->timed_out()
-
Returns
1if the most recent code executed inrun()timed out, orundefif it did not. - $t->reset()
-
If called within a
run()code reference, causes the current alarm timer to be reset to its starting value.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 50:
=over without closing =back