2 # Polled Timer handling
4 # This uses callbacks. BE CAREFUL!!!!
8 # Copyright (c) 2001 Dirk Koopman G1TLH
15 use vars qw(@timerchain $notimers $lasttime);
25 my ($pkg, $time, $proc, $recur) = @_;
27 my $class = $obj || $pkg;
28 my $self = bless { t=>$time + $main::systime, proc=>$proc }, $class;
29 $self->{interval} = $time if $recur;
30 push @timerchain, $self;
31 $notimers = @timerchain;
32 dbg("Timer created (notimers: $notimers)") if isdbg('connll');
40 @timerchain = grep {$_ != $self} @timerchain;
41 $notimers = @timerchain;
42 dbg("Timer deleted (notimers: $notimers)") if isdbg('connll');
47 my $now = $main::systime;
49 return unless $now != $lasttime;
51 # handle things on the timer chain
53 foreach $t (@timerchain) {
54 if ($now >= $t->{t}) {
56 $t->{t} = $now + $t->{interval} if exists $t->{interval};
65 dbg("timer destroyed ($DXTimer::notimers)") if isdbg('connll');