summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2011-05-24 07:10:21 +0000
committerPaul Buetow <paul@buetow.org>2011-05-24 07:10:21 +0000
commit28ea6c26d639f0e30535765258f0c698ef57b22e (patch)
tree6c499498a1a476df7d4ed085976ea380cbdcb249
parentb5920fb74fe0ce472da37dc4d6402392a69d42fa (diff)
initial working Time::HiRes interval handling
-rw-r--r--conf/perldaemon.conf4
-rw-r--r--lib/PerlDaemon/RunModules.pm14
2 files changed, 11 insertions, 7 deletions
diff --git a/conf/perldaemon.conf b/conf/perldaemon.conf
index 735cb67..c0071a1 100644
--- a/conf/perldaemon.conf
+++ b/conf/perldaemon.conf
@@ -1,9 +1,9 @@
# Minimal Perl Daemon Sample Configuration
daemon.wd = ./
-daemon.loopinterval = 3
+daemon.loopinterval = 1
daemon.alivefile = ./run/perldaemon.alive
daemon.pidfile = ./run/perldaemon.pid
daemon.logfile = ./log/perldaemon.log
daemon.modules.dir = ./lib/PerlDaemonModules
-daemon.modules.runiterval = 3
+daemon.modules.runinterval = 3
daemon.daemonize = no
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm
index 4420cd7..426bc83 100644
--- a/lib/PerlDaemon/RunModules.pm
+++ b/lib/PerlDaemon/RunModules.pm
@@ -25,7 +25,7 @@ sub new ($$) {
# TODO: Add eval catching jost un case for errors
$loadedmodules{$name} = eval "${name}->new(\$conf)";
$scheduler{$name}{lastrun} = [0,0];
- $scheduler{$name}{interval} = $conf->{'modules.runinterval'};
+ $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
}
} else {
@@ -50,10 +50,14 @@ sub do ($) {
} else {
while (my ($k, $v) = each %$modules) {
my $now = [gettimeofday];
- $logger->logmsg(tv_interval($now, $scheduler->{$k}{lastrun}));
- $logger->logmsg("Triggering $k");
- $scheduler->{$k}{lastrun} = $now;
- #$v->do();
+ my $timediff = tv_interval($scheduler->{$k}{lastrun}, $now);
+ my $interval = $scheduler->{$k}{interval};
+
+ if ($timediff >= $interval) {
+ $logger->logmsg("Triggering $k (last run before ${timediff}s ; wanted interval: ${interval}s)");
+ $scheduler->{$k}{lastrun} = $now;
+ $v->do();
+ }
}
}
}