diff --git a/js/engine.js b/js/engine.js index bf1d686..3b074a9 100644 --- a/js/engine.js +++ b/js/engine.js @@ -8,8 +8,6 @@ var path = require('path'), listRules = {}, listActionModules = {}, isRunning = true, - actionsLoaded = false, - eventsLoaded = false, ml, poller, db; exports = module.exports = function(args) { @@ -18,10 +16,7 @@ exports = module.exports = function(args) { ml = require('./module_loader')(args); poller = cp.fork(path.resolve(__dirname, 'eventpoller'), [log.getLogType()]); poller.on('message', function(evt) { - if(evt.event === 'ep_finished_loading') { - eventsLoaded = true; - tryToLoadRules(); - } else exports.pushEvent(evt); + exports.pushEvent(evt); }); //start to poll the event queue pollQueue(); @@ -34,16 +29,14 @@ exports = module.exports = function(args) { * @param {String} db_port the db port * @param {String} crypto_key the key to be used for encryption on the db, max legnth 256 */ -exports.addDBLink = function(db_link) { db = db_link; }; - -exports.loadActions = function(cb) { +exports.addDBLinkAndLoadActionsAndRules = function(db_link) { + db = db_link; if(ml && db) db.getActionModules(function(err, obj) { if(err) log.error('EN', 'retrieving Action Modules from DB!'); else { if(!obj) { log.print('EN', 'No Action Modules found in DB!'); - actionsLoaded = true; - tryToLoadRules(); + loadRulesFromDB(); } else { var m, semaphore = 0; for(var el in obj) { @@ -53,8 +46,7 @@ exports.loadActions = function(cb) { db.getActionModuleAuth(el, function(mod) { return function(err, obj) { if(--semaphore == 0) { - actionsLoaded = true; - tryToLoadRules(); + loadRulesFromDB(); } if(obj && mod.loadCredentials) mod.loadCredentials(JSON.parse(obj)); }; @@ -67,12 +59,10 @@ exports.loadActions = function(cb) { else log.severe('EN', new Error('Module Loader not defined!')); }; -function tryToLoadRules() { - if(db && eventsLoaded && actionsLoaded) { - db.getRules(function(err, obj) { - for(var el in obj) exports.loadRule(JSON.parse(obj[el])); - }); - } +function loadRulesFromDB() { + if(db) db.getRules(function(err, obj) { + for(var el in obj) exports.loadRule(JSON.parse(obj[el])); + }); } /** diff --git a/js/eventpoller.js b/js/eventpoller.js index 8893bc7..668a7d4 100644 --- a/js/eventpoller.js +++ b/js/eventpoller.js @@ -19,9 +19,6 @@ var fs = require('fs'), function init() { //FIXME ensure eventpoller receives the log method from the engine - console.log('EP receives args:'); - console.log('logmeth: ' + parseInt(process.argv[2]) || 0); - console.log(process.argv); if(process.argv.length > 2) log({ logType: parseInt(process.argv[2]) || 0 }); var args = { logType: log.getLogType() }; ml = require('./module_loader')(args); @@ -34,15 +31,15 @@ function init() { function loadEventModules() { - //TODO eventpoller will not load event modules from filesystem, this will be done by - // the moduel manager and the eventpoller receives messages about new/updated active rules + //TODO eventpoller will not load event modules from db on init, this will be done + // when receiving messages about new/updated active rules if(db && ml) db.getEventModules(function(err, obj) { if(err) log.error('EP', 'retrieving Event Modules from DB!'); else { if(!obj) { log.print('EP', 'No Event Modules found in DB!'); - process.send({ event: 'ep_finished_loading' }); + //process.send({ event: 'ep_finished_loading' }); } else { var m, semaphore = 0; for(var el in obj) { @@ -51,7 +48,7 @@ function loadEventModules() { m = ml.requireFromString(obj[el], el); db.getEventModuleAuth(el, function(mod) { return function(err, obj) { - if(--semaphore === 0) process.send({ event: 'ep_finished_loading' }); + //if(--semaphore === 0) process.send({ event: 'ep_finished_loading' }); if(obj && mod.loadCredentials) mod.loadCredentials(JSON.parse(obj)); }; }(m)); @@ -99,7 +96,8 @@ function initMessageActions() { } }); } - +//FIXME the eventpoller doesn't do the loading! this is done by the module manager, +// the ep only gets notified of new rules that require active polling! function initAdminCommands() { listAdminCommands['loadevent'] = function(args) { if(ml) ml.loadModule('mod_events', args[2], loadEventCallback); diff --git a/js/server.js b/js/server.js index 624d02a..228961c 100644 --- a/js/server.js +++ b/js/server.js @@ -48,8 +48,8 @@ function init() { engine = require('./engine')(args); http_listener = require('./http_listener')(args); mm = require('./module_manager')(args); - db = require('./db_interface')(args); log.print('RS', 'Initialzing DB'); + db = require('./db_interface')(args); objCmds = { 'loadrules': mm.loadRulesFile, 'loadaction': mm.loadActionModule, @@ -58,7 +58,8 @@ function init() { 'loadevents': engine.loadEventModules, 'shutdown': shutDown }; - engine.addDBLink(db); + log.print('RS', 'Initialzing engine'); + engine.addDBLinkAndLoadActionsAndRules(db); log.print('RS', 'Initialzing http listener'); http_listener.addHandlers(handleAdminCommands, engine.pushEvent); log.print('RS', 'Initialzing module manager');