1
0

Trigger.pm 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. ################################################################################
  2. # $Id: Trigger.pm 2880 2007-04-12 18:52:02Z b4rt $
  3. # $Date: 2007-04-12 13:52:02 -0500 (Thu, 12 Apr 2007) $
  4. # $Revision: 2880 $
  5. ################################################################################
  6. # #
  7. # LICENSE #
  8. # #
  9. # This program is free software; you can redistribute it and/or #
  10. # modify it under the terms of the GNU General Public License (GPL) #
  11. # as published by the Free Software Foundation; either version 2 #
  12. # of the License, or (at your option) any later version. #
  13. # #
  14. # This program is distributed in the hope that it will be useful, #
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of #
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
  17. # GNU General Public License for more details. #
  18. # #
  19. # To read the license please visit http://www.gnu.org/copyleft/gpl.html #
  20. # #
  21. # #
  22. ################################################################################
  23. package Trigger;
  24. use strict;
  25. use warnings;
  26. ################################################################################
  27. ################################################################################
  28. # fields #
  29. ################################################################################
  30. # version in a var
  31. my $VERSION = do {
  32. my @r = (q$Revision: 2880 $ =~ /\d+/g); sprintf "%d"."%02d" x $#r, @r };
  33. # state
  34. my $state = Fluxd::MOD_STATE_NULL;
  35. # message, error etc. keep it in one string for simplicity atm.
  36. my $message = "";
  37. # loglevel
  38. my $loglevel = 0;
  39. # run-interval
  40. my $interval;
  41. # time of last run
  42. my $time_last_run = 0;
  43. ################################################################################
  44. # constructor + destructor #
  45. ################################################################################
  46. #------------------------------------------------------------------------------#
  47. # Sub: new #
  48. # Arguments: Null #
  49. # Returns: object reference #
  50. #------------------------------------------------------------------------------#
  51. sub new {
  52. my $class = shift;
  53. my $self = bless ({}, ref ($class) || $class);
  54. return $self;
  55. }
  56. #------------------------------------------------------------------------------#
  57. # Sub: destroy #
  58. # Arguments: Null #
  59. # Returns: Null #
  60. #------------------------------------------------------------------------------#
  61. sub destroy {
  62. # set state
  63. $state = Fluxd::MOD_STATE_NULL;
  64. # log
  65. Fluxd::printMessage("Trigger", "shutdown\n");
  66. }
  67. ################################################################################
  68. # public methods #
  69. ################################################################################
  70. #------------------------------------------------------------------------------#
  71. # Sub: initialize. this is separated from constructor to call it independent #
  72. # from object-creation. #
  73. # Arguments: null #
  74. # Returns: 0|1 #
  75. #------------------------------------------------------------------------------#
  76. sub initialize {
  77. shift; # class
  78. # loglevel
  79. $loglevel = Fluxd::getLoglevel();
  80. if (!(defined $loglevel)) {
  81. # message
  82. $message = "loglevel not defined";
  83. # set state
  84. $state = Fluxd::MOD_STATE_ERROR;
  85. # return
  86. return 0;
  87. }
  88. # interval
  89. $interval = FluxDB->getFluxConfig("fluxd_Trigger_interval");
  90. if (!(defined $interval)) {
  91. # message
  92. $message = "interval not defined";
  93. # set state
  94. $state = Fluxd::MOD_STATE_ERROR;
  95. # return
  96. return 0;
  97. }
  98. Fluxd::printMessage("Trigger", "initializing (loglevel: ".$loglevel." ; interval: ".$interval.")\n");
  99. # reset last run time
  100. $time_last_run = time();
  101. # set state
  102. $state = Fluxd::MOD_STATE_OK;
  103. # return
  104. return 1;
  105. }
  106. #------------------------------------------------------------------------------#
  107. # Sub: getVersion #
  108. # Arguments: null #
  109. # Returns: VERSION #
  110. #------------------------------------------------------------------------------#
  111. sub getVersion {
  112. return $VERSION;
  113. }
  114. #------------------------------------------------------------------------------#
  115. # Sub: getState #
  116. # Arguments: null #
  117. # Returns: state #
  118. #------------------------------------------------------------------------------#
  119. sub getState {
  120. return $state;
  121. }
  122. #------------------------------------------------------------------------------#
  123. # Sub: getMessage #
  124. # Arguments: null #
  125. # Returns: message #
  126. #------------------------------------------------------------------------------#
  127. sub getMessage {
  128. return $message;
  129. }
  130. #------------------------------------------------------------------------------#
  131. # Sub: set #
  132. # Arguments: Variable [value] #
  133. # Returns: #
  134. #------------------------------------------------------------------------------#
  135. sub set {
  136. }
  137. #------------------------------------------------------------------------------#
  138. # Sub: main #
  139. # Arguments: Null #
  140. # Returns: #
  141. #------------------------------------------------------------------------------#
  142. sub main {
  143. if ((time() - $time_last_run) >= $interval) {
  144. Fluxd::printMessage("Trigger", "main\n"); # DEBUG
  145. # set last run time
  146. $time_last_run = time();
  147. }
  148. }
  149. #------------------------------------------------------------------------------#
  150. # Sub: command #
  151. # Arguments: command-string #
  152. # Returns: result-string #
  153. #------------------------------------------------------------------------------#
  154. sub command {
  155. shift; # class
  156. my $command = shift;
  157. # TODO
  158. return "";
  159. }
  160. #------------------------------------------------------------------------------#
  161. # Sub: status #
  162. # Arguments: Null #
  163. # Returns: Status information #
  164. #------------------------------------------------------------------------------#
  165. sub status {
  166. my $return = "";
  167. $return .= "\n-= Trigger Revision ".$VERSION." =-\n";
  168. $return .= "interval : ".$interval." s \n";
  169. return $return;
  170. }
  171. ################################################################################
  172. # make perl happy #
  173. ################################################################################
  174. 1;