const configJSON = require('../config.json'); const logger = require('./logger.js'); const Watcher = require('./watcher.js'); const watchers = []; function initialize() { return new Promise(function (resolve, reject) { if (configJSON == undefined || configJSON.watchers == undefined || configJSON.watchers.length == 0) { reject('error: no input devices defined'); } var tmp = [] for (var index = 0; index < configJSON.watchers.length; index++) { tmp.push(new Watcher(configJSON.watchers[index])); } Promise.all(tmp.map(check)).then(resolve); }); } function check(watcher) { return new Promise(function (resolve, reject) { if (watcher == undefined) { reject(); } watcher.check() .then(() => { logger.info('watcher \'' + watcher.device) watcher.start(); watchers.push(watcher); }) .catch((err) => { logger.error(err);d }); }); } function start() { logger.debug('starting ' + watchers.size + ' watcher(s)...'); for (const watcher of watchers.entries()) { watcher[1].start(); } } function stop() { const count = watchers.size; logger.info('stopping all ' + count + ' watchers...'); for (var index = 0; index < count; index++) { var watcher = watchers[index]; logger.debug('stopping watcher ' + watcher.id + '...'); watcher.kill(); } } function callback(err, id, code) { this.watchers.delete(id); logger.debug('removed watcher \'' + id + '\''); } module.exports = { initialize, start, stop }