webapi-eca/testing/mod_eventpoller.js
2013-11-14 15:06:10 +01:00

144 lines
No EOL
5 KiB
JavaScript

exports.testUnit_EventPoller = function(test){
test.ok(false, "needs implementation");
test.done();
};
// // # Event Poller
//
// 'use strict';
//
// if(process.argv.length < 3) {
// log.error('EP', 'No DB port defined! Not starting poller...');
// } else {
// (function() {
// var fs = require('fs'),
// path = require('path'),
// log = require('./logging'),
// db = require('./db_interface'),
// ml = require('./module_loader'),
// listMessageActions = {},
// listAdminCommands = {},
// listEventModules = {},
// listPoll = {}, //TODO this will change in the future because it could have
// //several parameterized (user-specific) instances of each event module
// isRunning = true,
// eId = 0;
// //TODO allow different polling intervals (a wrapper together with settimeout per to be polled could be an easy and solution)
//
// db.init(process.argv[2], process.argv[3]);
//
// //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
//
// 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' });
// } else {
// var m, semaphore = 0;
// for(var el in obj) {
// semaphore++;
// 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(obj && mod.loadCredentials) mod.loadCredentials(JSON.parse(obj));
// };
// }(m));
// log.print('EP', 'Loading Event Module: ' + el);
// listEventModules[el] = m;
// }
// }
// }
// });
//
// listMessageActions['event'] = function(args) {
// var prop = args[1], arrModule = prop.split('->');
// // var arrModule = obj.module.split('->');
// if(arrModule.length > 1){
// var module = listEventModules[arrModule[0]];
// for(var i = 1; i < arrModule.length; i++) {
// if(module) module = module[arrModule[i]];
// }
// if(module) {
// log.print('EP', 'Found active event module "' + prop + '", adding it to polling list');
// listPoll[prop] = module;
// } else {
// log.print('EP', 'No property "' + prop + '" found');
// }
// }
// };
//
// listAdminCommands['loadevent'] = function(args) {
// ml.loadModule('mod_events', args[2], loadEventCallback);
// };
//
// listAdminCommands['loadevents'] = function(args) {
// ml.loadModules('mod_events', loadEventCallback);
// };
//
// listAdminCommands['shutdown'] = function(args) {
// log.print('EP', 'Shutting down DB Link');
// isRunning = false;
// db.shutDown();
// };
//
// //TODO this goes into module_manager, this will receive notification about
// // new loaded/stored event modules and fetch them from the db
// listMessageActions['cmd'] = function(args) {
// var func = listAdminCommands[args[1]];
// if(typeof(func) === 'function') func(args);
// };
//
// process.on('message', function(strProps) {
// var arrProps = strProps.split('|');
// if(arrProps.length < 2) log.error('EP', 'too few parameter in message!');
// else {
// var func = listMessageActions[arrProps[0]];
// if(func) func(arrProps);
// }
// });
// function loadEventCallback(name, data, mod, auth) {
// db.storeEventModule(name, data); // store module in db
// if(auth) db.storeEventModuleAuth(name, auth);
// listEventModules[name] = mod; // store compiled module for polling
// }
//
// function checkRemotes() {
// var txt = 'Polled active event modules: ';
// for(var prop in listPoll) {
// txt += prop + ', ';
// listPoll[prop](
// /*
// * what a hack to get prop local :-P
// * define and immediately call anonymous function with param prop.
// * This places the value of prop into the context of the callback
// * and thus doesn't change when the for loop keeps iterating over listPoll
// */
// (function(p) {
// return function(obj) {
// process.send({
// event: p,
// eventid: 'polled_' + eId++,
// data: obj
// });
// };
// })(prop)
// );
// }
// log.print('EP', txt);
// }
//
// function pollLoop() {
// if(isRunning) {
// checkRemotes();
// setTimeout(pollLoop, 10000);
// }
// }
//
// pollLoop();
// })();
// }