2018-06-08 14:14:26 -05:00
|
|
|
import * as childProcess from 'child_process';
|
2018-08-13 18:21:25 -05:00
|
|
|
import * as Deque from 'double-ended-queue';
|
2018-06-08 14:14:26 -05:00
|
|
|
import Xev from 'xev';
|
|
|
|
|
|
|
|
const ev = new Xev();
|
|
|
|
|
2018-07-14 05:49:21 -05:00
|
|
|
export default function() {
|
2018-08-13 18:21:25 -05:00
|
|
|
const log = new Deque<any>();
|
2018-06-08 14:14:26 -05:00
|
|
|
|
|
|
|
const p = childProcess.fork(__dirname + '/notes-stats-child.js');
|
|
|
|
|
|
|
|
p.on('message', stats => {
|
|
|
|
ev.emit('notesStats', stats);
|
|
|
|
log.push(stats);
|
2018-08-15 06:20:46 -05:00
|
|
|
if (log.length > 100) log.shift();
|
2018-06-08 14:14:26 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
ev.on('requestNotesStatsLog', id => {
|
2018-09-01 09:12:51 -05:00
|
|
|
ev.emit(`notesStatsLog:${id}`, log.toArray());
|
2018-06-08 14:14:26 -05:00
|
|
|
});
|
2018-07-13 10:39:39 -05:00
|
|
|
|
|
|
|
process.on('exit', code => {
|
|
|
|
process.kill(p.pid);
|
|
|
|
});
|
|
|
|
|
2018-06-08 14:14:26 -05:00
|
|
|
}
|