* msg_network.js: Management of message network modules (start/stop/etc.)

* Minor updates to ES6 in some areas
* Better bbs.js startup seq
* Better iterator support for loadModulesForCategory()
* Start work on loading message network modules & tieing in record() (WIP)
* FTN PacketHeader is now a ES6 class
* Various FTN utils, e.g. Via line creation
This commit is contained in:
Bryan Ashby 2016-02-16 22:11:55 -07:00
parent 13d5c4d8f4
commit 74f5342997
10 changed files with 388 additions and 96 deletions

View file

@ -1,20 +1,22 @@
/* jslint node: true */
'use strict';
var Config = require('./config.js').config;
var miscUtil = require('./misc_util.js');
// ENiGMA½
let Config = require('./config.js').config;
let miscUtil = require('./misc_util.js');
var fs = require('fs');
var paths = require('path');
var _ = require('lodash');
var assert = require('assert');
// standard/deps
let fs = require('fs');
let paths = require('path');
let _ = require('lodash');
let assert = require('assert');
let async = require('async');
// exports
exports.loadModuleEx = loadModuleEx;
exports.loadModule = loadModule;
exports.loadModulesForCategory = loadModulesForCategory;
function loadModuleEx(options, cb) {
assert(_.isObject(options));
assert(_.isString(options.name));
@ -44,7 +46,7 @@ function loadModuleEx(options, cb) {
return;
}
// Ref configuration, if any, for convience to the module
// Ref configuration, if any, for convience to the module
mod.runtime = { config : modConfig };
cb(null, mod);
@ -63,18 +65,27 @@ function loadModule(name, category, cb) {
});
}
function loadModulesForCategory(category, iterator) {
var path = Config.paths[category];
fs.readdir(path, function onFiles(err, files) {
function loadModulesForCategory(category, iterator, complete) {
fs.readdir(Config.paths[category], (err, files) => {
if(err) {
cb(err);
iterator(err);
return;
}
var filtered = files.filter(function onFilter(file) { return '.js' === paths.extname(file); });
filtered.forEach(function onFile(file) {
loadModule(paths.basename(file, '.js'), category, iterator);
const jsModules = files.filter(file => {
return '.js' === paths.extname(file);
});
async.each(jsModules, (file, next) => {
loadModule(paths.basename(file, '.js'), category, (err, mod) => {
iterator(err, mod);
next();
});
}, err => {
if(complete) {
complete(err);
}
});
});
}