summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2011-06-02 09:14:07 +0000
committerPaul Buetow <paul@buetow.org>2011-06-02 09:14:07 +0000
commit90e682008264320189a7f0c8bf65f91c9f22b24e (patch)
tree619318b74c7904b785cb9d6678cea14b4c60f27b
parent7940ed0177b210526662c698cadef26913ba0ed6 (diff)
Added module load error handling
-rw-r--r--CHANGELOG3
-rw-r--r--TODO4
-rw-r--r--lib/PerlDaemon/RunModules.pm20
3 files changed, 19 insertions, 8 deletions
diff --git a/CHANGELOG b/CHANGELOG
index cf89f4e..48f7f8b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Do 2. Jun 11:09:25 CEST 2011
+* Added module load error handling
+
Mo 30. Mai 21:29:20 CEST 2011
* Implemented Time::HiRes job scheduling
* Added passing of startup options. E.g.
diff --git a/TODO b/TODO
index 3648fbe..3b8f35f 100644
--- a/TODO
+++ b/TODO
@@ -1,2 +1,2 @@
-* Complete Time::HiRes job scheduler
-* Add error handling (catch eval if dynamic loadable module errors)
+* Add documentation
+* Add source headers (c)
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm
index fe3d9ac..b57dc61 100644
--- a/lib/PerlDaemon/RunModules.pm
+++ b/lib/PerlDaemon/RunModules.pm
@@ -16,16 +16,24 @@ sub new ($$) {
$logger->logmsg("Loading modules from $modulesdir");
for my $module (<$modulesdir/*.pm>) {
$logger->logmsg("Loading $module");
- require $module;
+ eval "require '$module'";
+ $logger->warn("Could not load module source file $module: $@")
+ if defined $@ and length $@;
}
for my $name (grep /PerlDaemonModules/, keys %INC) {
$name =~ s#.*(PerlDaemonModules)/(.*)\.pm$#$1::$2#;
- $logger->logmsg("Creating module instance of $name");
- # TODO: Add eval catching jost un case for errors
- $loadedmodules{$name} = eval "${name}->new(\$conf)";
- $scheduler{$name}{lastrun} = [0,0];
- $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
+ my $module = eval "${name}->new(\$conf)";
+
+ if (defined $@ and length $@) {
+ $logger->warn("Could not create module instance $name: $@");
+
+ } else {
+ $loadedmodules{$name} = $module;
+ $scheduler{$name}{lastrun} = [0,0];
+ $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
+ $logger->logmsg("Created module instance $name");
+ }
}
} else {