package Timer;
-use vars qw(@timerchain);
+use vars qw(@timerchain $notimers);
+use DXDebug;
@timerchain = ();
+$notimers = 0;
+
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
+$main::build += $VERSION;
+$main::branch += $BRANCH;
sub new
{
my $self = bless { t=>$time + time, proc=>$proc }, $class;
$self->{interval} = $time if $recur;
push @timerchain, $self;
+ $notimers++;
+ dbg("Timer created ($notimers)") if isdbg('connll');
return $self;
}
sub del
{
my $self = shift;
- my $old = delete $self->{proc};
+ delete $self->{proc};
@timerchain = grep {$_ != $self} @timerchain;
- return $old;
}
sub handler
my $now = time;
# handle things on the timer chain
- for (@timerchain) {
- if ($now >= $_->{t}) {
- &{$_->{proc}}();
- $_->{t} = $now + $_->{interval} if exists $_->{interval};
+ my $t;
+ foreach $t (@timerchain) {
+ if ($now >= $t->{t}) {
+ &{$t->{proc}}();
+ $t->{t} = $now + $t->{interval} if exists $t->{interval};
}
}
}
+sub DESTROY
+{
+ dbg("timer destroyed ($Timer::notimers)") if isdbg('connll');
+ $Timer::notimers--;
+}
1;