mirror of
https://github.com/Hopiu/webapi-eca.git
synced 2026-03-17 06:20:23 +00:00
server loads everything correct now. still a lot of cleansing to do
This commit is contained in:
parent
efbb179832
commit
a6c3dd4510
3 changed files with 18 additions and 29 deletions
28
js/engine.js
28
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]));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
Loading…
Reference in a new issue