From 67595689337da13d06c21fe008064960f49299b2 Mon Sep 17 00:00:00 2001 From: ziajka Date: Tue, 12 Feb 2019 15:34:18 +0100 Subject: [PATCH] Update status of server when is already running --- local-server.js | 40 +++++++++++++------ .../components/servers/servers.component.ts | 8 ++++ src/app/services/server-management.service.ts | 4 ++ 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/local-server.js b/local-server.js index 59a3d90b..08b776ba 100644 --- a/local-server.js +++ b/local-server.js @@ -47,6 +47,10 @@ exports.stopLocalServer = async (server) => { return await stop(server.name); } +exports.getRunningServers = () => { + return Object.keys(runningServers); +} + function getServerArguments(server, overrides) { let serverArguments = []; return serverArguments; @@ -81,18 +85,26 @@ async function stop(serverName) { const stopped = new Promise((resolve, reject) => { if(pid === undefined) { resolve(`Server '${serverName} is already stopped`); + delete runningServers[serverName]; return; } kill(pid, (error) => { - if(error) { - console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`); - reject(error); - } - else { - console.log(`Stopped '${serverName}' with PID='${pid}'`); - resolve(`Stopped '${serverName}' with PID='${pid}'`); - } + if(error) { + console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`); + reject(error); + } + else { + delete runningServers[serverName]; + console.log(`Stopped '${serverName}' with PID='${pid}'`); + resolve(`Stopped '${serverName}' with PID='${pid}'`); + + notifyStatus({ + serverName: serverName, + status: 'stopped', + message: `Server '${serverName}' stopped'` + }); + } }); }); @@ -134,11 +146,13 @@ async function run(server, options) { }); serverProcess.on('exit', (code, signal) => { - notifyStatus({ - serverName: server.name, - status: 'errored', - message: `Server '${server.name}' has exited with status='${code}'` - }); + if(code > 0) { + notifyStatus({ + serverName: server.name, + status: 'errored', + message: `Server '${server.name}' has exited with status='${code}'` + }); + } }); serverProcess.on('error', (err) => { diff --git a/src/app/components/servers/servers.component.ts b/src/app/components/servers/servers.component.ts index 47cf7e61..cec9f8bb 100644 --- a/src/app/components/servers/servers.component.ts +++ b/src/app/components/servers/servers.component.ts @@ -30,7 +30,15 @@ export class ServersComponent implements OnInit, OnDestroy { ) {} ngOnInit() { + const runningServersNames = this.serverManagement.getRunningServers(); + this.serverService.findAll().then((servers: Server[]) => { + servers.forEach((server) => { + const serverIndex = runningServersNames.findIndex((serverName) => server.name === serverName); + if(serverIndex >= 0) { + server.status = 'running'; + } + }); this.serverDatabase.addServers(servers); }); diff --git a/src/app/services/server-management.service.ts b/src/app/services/server-management.service.ts index 81d0313b..9466c299 100644 --- a/src/app/services/server-management.service.ts +++ b/src/app/services/server-management.service.ts @@ -36,6 +36,10 @@ export class ServerManagementService implements OnDestroy { await this.electronService.remote.require('./local-server.js').stopLocalServer(server); } + getRunningServers() { + return this.electronService.remote.require('./local-server.js').getRunningServers(); + } + ngOnDestroy() { if(this.electronService.isElectronApp) { this.electronService.ipcRenderer.removeAllListeners(this.statusChannel);