Carrot
view release on metacpan or search on metacpan
lib/Carrot/Individuality/Singular/Process/Nested_Alarm.pm view on Meta::CPAN
package Carrot::Individuality::Singular::Process::Nested_Alarm
# /type class
# /attribute_type ::One_Anonymous::Array
# /capability ""
{
use strict;
use warnings 'FATAL' => 'all';
use Time::HiRes qw(
getitimer
ITIMER_REAL
setitimer
);
my $expressiveness = Carrot::individuality;
$expressiveness->provide(
my $epoch_time = '::Individuality::Singular::Process::Epoch_Time',
my $fatal_error = '::Individuality::Singular::Execution::Fatal_Error');
my $alarm = IS_FALSE;
my $sig_alrm = IS_UNDEFINED;
$sig_alrm = sub {
lib/Carrot/Individuality/Singular/Process/Nested_Alarm.pm view on Meta::CPAN
# seconds ::Personality::Abstract::Seconds
# //returns
# ::Personality::Abstract::Number
{
my ($this, $seconds) = @ARGUMENTS;
$alarm = IS_FALSE;
my $former = [$$epoch_time, 0];
if ($#$this > ADX_NO_ELEMENTS)
{
my $remaining = getitimer(ITIMER_REAL);
if ($seconds < $remaining)
{
$former->[IDX_NST_REMAINING] = $remaining;
setitimer(ITIMER_REAL, $seconds);
}
} else {
setitimer(ITIMER_REAL, $seconds);
}
push(@$this, $former);
return($#$this);
}
sub deactivate
# /type method
# /effect "Activates the main feature of the instance."
# //parameters
lib/Carrot/Individuality/Singular/Process/Nested_Alarm.pm view on Meta::CPAN
# //returns
{
my ($this, $which) = @ARGUMENTS;
return if ($which > $#$this);
my $former = pop(@$this);
if ($former->[1] > 0)
{
my $remaining = $former->[IDX_NST_REMAINING] - ($$epoch_time - $former->[IDX_NST_THEN]);
$remaining = 0.01 if ($remaining <= 0);
setitimer(ITIMER_REAL, $remaining);
}
if ($#$this == ADX_NO_ELEMENTS)
{
setitimer(ITIMER_REAL, 0);
$alarm = IS_FALSE; # reminder only
}
return;
}
# =--------------------------------------------------------------------------= #
return(PERL_FILE_LOADED);
}
( run in 0.958 second using v1.01-cache-2.11-cpan-49f99fa48dc )