mailtrain/server/lib/feedcheck.js

49 lines
1.1 KiB
JavaScript
Raw Normal View History

'use strict';
const fork = require('child_process').fork;
2018-09-27 19:32:35 +00:00
const log = require('./log');
const path = require('path');
const senders = require('./senders');
let messageTid = 0;
let feedcheckProcess;
module.exports = {
spawn,
scheduleCheck
};
function spawn(callback) {
log.verbose('Feed', 'Spawning feedcheck process');
feedcheckProcess = fork(path.join(__dirname, '..', 'services', 'feedcheck.js'), [], {
cwd: path.join(__dirname, '..'),
env: {NODE_ENV: process.env.NODE_ENV}
});
feedcheckProcess.on('message', msg => {
if (msg) {
if (msg.type === 'feedcheck-started') {
log.info('Feed', 'Feedcheck process started');
return callback();
} else if (msg.type === 'entries-added') {
senders.scheduleCheck();
}
}
});
feedcheckProcess.on('close', (code, signal) => {
log.error('Feed', 'Feedcheck process exited with code %s signal %s', code, signal);
});
}
function scheduleCheck() {
feedcheckProcess.send({
type: 'scheduleCheck',
tid: messageTid
});
messageTid++;
}