summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG4
-rw-r--r--WHISHLIST1
-rw-r--r--lib/PerlDaemon/RunModules.pm18
3 files changed, 16 insertions, 7 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 48f7f8b..87ee912 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Mo 6. Jun 09:03:57 CEST 2011
+* Added './control foreground' startup option
+* Added correct time carrying
+
Do 2. Jun 11:09:25 CEST 2011
* Added module load error handling
diff --git a/WHISHLIST b/WHISHLIST
index aa39935..3d9a157 100644
--- a/WHISHLIST
+++ b/WHISHLIST
@@ -1,3 +1,2 @@
* Add documentation
-* Add carry handling (sum it up)
* Add special SIGNAL handling (e.g. trigger modules)
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm
index 95bb577..5aa9f9a 100644
--- a/lib/PerlDaemon/RunModules.pm
+++ b/lib/PerlDaemon/RunModules.pm
@@ -2,6 +2,8 @@
package PerlDaemon::RunModules;
+use strict;
+use warnings;
use Time::HiRes qw(gettimeofday tv_interval);
sub new ($$) {
@@ -33,6 +35,8 @@ sub new ($$) {
} else {
$loadedmodules{$name} = $module;
$scheduler{$name}{lastrun} = [0,0];
+ $scheduler{$name}{carrysum} = 0;
+ $scheduler{$name}{firstloop} = 1;
$scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
$logger->logmsg("Created module instance $name");
}
@@ -63,14 +67,17 @@ sub do ($) {
my $now = [gettimeofday];
my $timediff = tv_interval($scheduler->{$k}{lastrun}, $now);
my $interval = $scheduler->{$k}{interval};
+ my $carrytimediff = $timediff + $scheduler->{$k}{carrysum};
- if ($timediff >= $interval) {
- my $carry = $timediff - $interval;
+ if ($carrytimediff >= $interval) {
+ my $carry = $carrytimediff - $interval;
$logger->logmsg("Triggering $k (last triggered before ${timediff}s; carry: ${carry}s; wanted interval: ${interval}s)");
- # TODO: carry handling
- #if ($firstloop == 0) {
- #}
+ if ($scheduler->{$k}{firstloop} == 0) {
+ $scheduler->{$k}{carrysum} = $carry;
+ } else {
+ $scheduler->{$k}{firstloop} = 0;
+ }
$scheduler->{$k}{lastrun} = $now;
$v->do();
@@ -78,7 +85,6 @@ sub do ($) {
}
}
- $firstloop = 0;
}
}