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 | |
| parent | 6b1b59d3fde7946b97c20efc08bab95ac42f4ca6 (diff) | |
initial Time::HiRes scheduler
| -rw-r--r-- | TODO | 1 | ||||
| -rw-r--r-- | conf/perldaemon.conf | 1 | ||||
| -rw-r--r-- | lib/PerlDaemon/RunModules.pm | 8 |
3 files changed, 10 insertions, 0 deletions
@@ -1 +1,2 @@ +* Complete Time::HiRes job scheduler * Add error handling (catch eval if dynamic loadable module errors) diff --git a/conf/perldaemon.conf b/conf/perldaemon.conf index df5992c..fcbc3ce 100644 --- a/conf/perldaemon.conf +++ b/conf/perldaemon.conf @@ -5,3 +5,4 @@ daemon.alivefile = ./run/perldaemon.alive daemon.pidfile = ./run/perldaemon.pid daemon.logfile = ./log/perldaemon.log daemon.modulesdir = ./lib/PerlDaemonModules +daemon.modulesruniterval = 3 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; } } } |
