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) {
|
2021-07-26 00:18:21 -04:00
|
|
|
console.log('client sending quit event')
|
2021-07-25 13:57:47 -04:00
|
|
|
ipc.of[name].emit(IPC_QUIT_EVENT);
|
2021-07-26 00:18:21 -04:00
|
|
|
process.exit(0);
|
2021-07-25 13:57:47 -04:00
|
|
|
} else {
|
|
|
|
|
process.exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
restart() {
|
|
|
|
|
if (connected) {
|
2021-07-26 00:18:21 -04:00
|
|
|
console.log('client emitting ipc restart')
|
2021-07-25 13:57:47 -04:00
|
|
|
ipc.of[name].emit(IPC_RESTART_EVENT);
|
2021-07-26 00:18:21 -04:00
|
|
|
process.exit(0);
|
2021-07-25 13:57:47 -04:00
|
|
|
} else {
|
2021-07-26 00:18:21 -04:00
|
|
|
console.log('eh?! not connected to tower... closing')
|
|
|
|
|
process.exit(0);
|
2021-07-25 13:57:47 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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');
|
|
|
|
|
})
|
2021-07-26 00:18:21 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/////////////
|