From 90e682008264320189a7f0c8bf65f91c9f22b24e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 2 Jun 2011 09:14:07 +0000 Subject: Added module load error handling --- CHANGELOG | 3 +++ TODO | 4 ++-- lib/PerlDaemon/RunModules.pm | 20 ++++++++++++++------ 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 { -- cgit v1.2.3