hadean-old/src/ProcessManager.ts

43 lines
926 B
TypeScript
Raw Normal View History

2021-07-25 13:57:47 -04:00
import EventEmitter from 'events';
2021-07-23 00:12:02 -04:00
import ipc from 'node-ipc';
import {
IPC_CLIENT_CONNECT_NAME,
IPC_CLIENT_APPSAPCE,
IPC_QUIT_EVENT,
2021-07-25 13:57:47 -04:00
IPC_RESTART_EVENT,
IPC_REQUEST_RESTART
2021-07-23 00:12:02 -04:00
} from './Constants.js';
2021-07-25 13:57:47 -04:00
let connected = false;
class ProcessManagerClass extends EventEmitter {
quit() {
if (connected) {
ipc.of[name].emit(IPC_QUIT_EVENT);
} else {
process.exit(0);
}
}
restart() {
if (connected) {
ipc.of[name].emit(IPC_RESTART_EVENT);
} else {
process.exit(1);
}
}
}
export const ProcessManager = new ProcessManagerClass();
2021-07-23 00:12:02 -04:00
const name = IPC_CLIENT_CONNECT_NAME;
ipc.config.appspace = IPC_CLIENT_APPSAPCE;
ipc.config.silent = true;
ipc.connectTo(name, () => {
ipc.of[name].on('connect', () => connected = true);
ipc.of[name].on('disconnect', () => connected = false);
2021-07-25 13:57:47 -04:00
ipc.of[name].on(IPC_REQUEST_RESTART, () => {
ProcessManager.emit('reload');
})
});