/* jslint node: true */ 'use strict'; // ENiGMA½ const { loadModulesForCategory, moduleCategories } = require('./module_util'); // standard/deps const async = require('async'); exports.startup = startup; exports.shutdown = shutdown; exports.recordMessage = recordMessage; let msgNetworkModules = []; function startup(cb) { async.series( [ function loadModules(callback) { loadModulesForCategory( moduleCategories.ScannerTossers, (module, nextModule) => { const modInst = new module.getModule(); modInst.startup(err => { if (!err) { msgNetworkModules.push(modInst); } }); return nextModule(null); }, err => { callback(err); } ); }, ], cb ); } function shutdown(cb) { async.each( msgNetworkModules, (msgNetModule, next) => { msgNetModule.shutdown(() => { return next(); }); }, () => { msgNetworkModules = []; return cb(null); } ); } function recordMessage(message, cb) { // // Give all message network modules (scanner/tossers) // a chance to do something with |message|. Any or all can // choose to ignore it. // async.each( msgNetworkModules, (modInst, next) => { modInst.record(message); next(); }, err => { cb(err); } ); }