diff options
| author | Paul Buetow <paul@buetow.org> | 2011-05-23 06:42:15 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2011-05-23 06:42:15 +0000 |
| commit | d3b21ede5632b4dfd2863048714727c39a26bf69 (patch) | |
| tree | 148e5bfbeb8225012313059eed394d25a33dac5d /lib/PerlDaemon | |
| parent | 6b1b59d3fde7946b97c20efc08bab95ac42f4ca6 (diff) | |
initial Time::HiRes scheduler
Diffstat (limited to 'lib/PerlDaemon')
| -rw-r--r-- | lib/PerlDaemon/RunModules.pm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm index f031af4..485ca60 100644 --- a/lib/PerlDaemon/RunModules.pm +++ b/lib/PerlDaemon/RunModules.pm @@ -1,5 +1,7 @@ package PerlDaemon::RunModules; +use Time::HiRes qw(gettimeofday tv_interval); + sub new ($$$) { my ($class, $conf) = @_; @@ -8,6 +10,7 @@ sub new ($$$) { my $modulesdir = $conf->{'daemon.modulesdir'}; my $logger = $conf->{logger}; my %loadedmodules; + my %scheduler; if (-d $modulesdir) { $logger->logmsg("Loading modules from $modulesdir"); @@ -20,6 +23,8 @@ sub new ($$$) { $name =~ s#.*(PerlDaemonModules)/(.*)\.pm$#$1::$2#; $logger->logmsg("Creating module instance of $name"); $loadedmodules{$name} = eval "${name}->new(\$conf)"; + $scheduler{$name}{lastrun} = 0.0; + $scheduler{$name}{interval} = $conf->{modulesruninterval}; } } else { @@ -27,6 +32,7 @@ sub new ($$$) { } $conf->{modules} = \%loadedmodules; + $conf->{scheduler} = \%scheduler; return $self; } @@ -35,6 +41,7 @@ sub do ($) { my $conf = $self->{conf}; my $logger = $conf->{logger}; my $modules = $conf->{modules}; + my $scheduler = $conf->{scheduler}; unless (%$modules) { $logger->warn("No modules are loaded!"); @@ -42,6 +49,7 @@ sub do ($) { while (my ($k, $v) = each %$modules) { $logger->logmsg("Triggering $k"); $v->do(); + $scheduler->{$k} = gettimeofday; } } } |
