2018-09-02 12:59:02 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const fork = require('child_process').fork;
|
2018-09-27 19:32:35 +00:00
|
|
|
const log = require('./log');
|
2018-09-02 12:59:02 +00:00
|
|
|
const path = require('path');
|
2018-11-17 01:54:23 +00:00
|
|
|
const senders = require('./senders');
|
2019-04-22 00:41:40 +00:00
|
|
|
const bluebird = require('bluebird');
|
2018-09-02 12:59:02 +00:00
|
|
|
|
2018-12-29 14:12:42 +00:00
|
|
|
let messageTid = 0;
|
2018-09-02 12:59:02 +00:00
|
|
|
let feedcheckProcess;
|
|
|
|
|
|
|
|
function spawn(callback) {
|
2018-09-02 18:17:42 +00:00
|
|
|
log.verbose('Feed', 'Spawning feedcheck process');
|
2018-09-02 12:59:02 +00:00
|
|
|
|
|
|
|
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();
|
2018-11-17 01:54:23 +00:00
|
|
|
} else if (msg.type === 'entries-added') {
|
|
|
|
senders.scheduleCheck();
|
2018-09-02 12:59:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
feedcheckProcess.on('close', (code, signal) => {
|
|
|
|
log.error('Feed', 'Feedcheck process exited with code %s signal %s', code, signal);
|
|
|
|
});
|
|
|
|
}
|
2018-12-29 14:12:42 +00:00
|
|
|
|
|
|
|
function scheduleCheck() {
|
|
|
|
feedcheckProcess.send({
|
|
|
|
type: 'scheduleCheck',
|
|
|
|
tid: messageTid
|
|
|
|
});
|
|
|
|
|
|
|
|
messageTid++;
|
|
|
|
}
|
|
|
|
|
2019-04-22 00:41:40 +00:00
|
|
|
module.exports.spawn = bluebird.promisify(spawn);
|
|
|
|
module.exports.scheduleCheck = scheduleCheck;
|