summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2011-05-13 15:19:28 +0000
committerPaul Buetow <paul@buetow.org>2011-05-13 15:19:28 +0000
commite95d965bc0d4dbf85193953af1e2f498b8a7b0a7 (patch)
tree0b01ea3df7ccf2805d035f7130f627d8c8ed8c0d
parent3c013e091e2bc16cfcc5a0d6c750b7dc2c9833db (diff)
ExampleModule.pm works
-rw-r--r--CHANGELOG7
-rw-r--r--lib/PerlDaemon/RunModules.pm24
-rw-r--r--lib/PerlDaemonModules/ExampleModule.pm13
3 files changed, 38 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 632f248..e18ed33 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
-* Added ./bin directory and moved
-* Some minor fixes
+
+* Major refactoring
+* Added 'restart' option
+* Added README file including a quick starting guide
+* Added separate PerlDaemonModules directory and an example module
Do 17. Mär 09:10:38 CET 2011
* Renamed DaemonLogic into RunModule
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;