diff options
| author | Paul Buetow <paul@buetow.org> | 2011-05-13 15:19:28 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2011-05-13 15:19:28 +0000 |
| commit | e95d965bc0d4dbf85193953af1e2f498b8a7b0a7 (patch) | |
| tree | 0b01ea3df7ccf2805d035f7130f627d8c8ed8c0d /lib | |
| parent | 3c013e091e2bc16cfcc5a0d6c750b7dc2c9833db (diff) | |
ExampleModule.pm works
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/PerlDaemon/RunModules.pm | 24 | ||||
| -rw-r--r-- | lib/PerlDaemonModules/ExampleModule.pm | 13 |
2 files changed, 33 insertions, 4 deletions
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm index 0dcd3d7..f031af4 100644 --- a/lib/PerlDaemon/RunModules.pm +++ b/lib/PerlDaemon/RunModules.pm @@ -7,14 +7,26 @@ sub new ($$$) { my $modulesdir = $conf->{'daemon.modulesdir'}; my $logger = $conf->{logger}; + my %loadedmodules; if (-d $modulesdir) { - $logger->logmsg("Loading modules from $modulesdir"); + $logger->logmsg("Loading modules from $modulesdir"); + for my $module (<$modulesdir/*.pm>) { + $logger->logmsg("Loading $module"); + require $module; + } + + for my $name (grep /PerlDaemonModules/, keys %INC) { + $name =~ s#.*(PerlDaemonModules)/(.*)\.pm$#$1::$2#; + $logger->logmsg("Creating module instance of $name"); + $loadedmodules{$name} = eval "${name}->new(\$conf)"; + } } else { $logger->warn("Modules dir $modulesdir does not exist!"); } + $conf->{modules} = \%loadedmodules; return $self; } @@ -22,8 +34,16 @@ sub do ($) { my $self = shift; my $conf = $self->{conf}; my $logger = $conf->{logger}; + my $modules = $conf->{modules}; - $logger->warn("No modules are loaded!"); + unless (%$modules) { + $logger->warn("No modules are loaded!"); + } else { + while (my ($k, $v) = each %$modules) { + $logger->logmsg("Triggering $k"); + $v->do(); + } + } } 1; diff --git a/lib/PerlDaemonModules/ExampleModule.pm b/lib/PerlDaemonModules/ExampleModule.pm index 75708f2..58dec1d 100644 --- a/lib/PerlDaemonModules/ExampleModule.pm +++ b/lib/PerlDaemonModules/ExampleModule.pm @@ -3,15 +3,24 @@ package PerlDaemonModules::ExampleModule; sub new ($$$) { my ($class, $conf) = @_; - return bless { conf => $conf }, $class; + my $self = bless { conf => $conf }, $class; + + # Store some private module stuff + $self->{counter} = 0; + + return $self; } +# Runs periodically in a loop (set interval in perldaemon.conf) sub do ($) { my $self = shift; my $conf = $self->{conf}; my $logger = $conf->{logger}; - $logger->logmsg('ExampleModule Test'); + # Calculate some private module stuff + my $count = ++$self->{counter}; + + $logger->logmsg("ExampleModule Test $count"); } 1; |
