Update status of server when is already running

This commit is contained in:
ziajka 2019-02-12 15:34:18 +01:00
parent af90fe46d0
commit 6759568933
3 changed files with 39 additions and 13 deletions

View File

@ -47,6 +47,10 @@ exports.stopLocalServer = async (server) => {
return await stop(server.name); return await stop(server.name);
} }
exports.getRunningServers = () => {
return Object.keys(runningServers);
}
function getServerArguments(server, overrides) { function getServerArguments(server, overrides) {
let serverArguments = []; let serverArguments = [];
return serverArguments; return serverArguments;
@ -81,18 +85,26 @@ async function stop(serverName) {
const stopped = new Promise((resolve, reject) => { const stopped = new Promise((resolve, reject) => {
if(pid === undefined) { if(pid === undefined) {
resolve(`Server '${serverName} is already stopped`); resolve(`Server '${serverName} is already stopped`);
delete runningServers[serverName];
return; return;
} }
kill(pid, (error) => { kill(pid, (error) => {
if(error) { if(error) {
console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`); console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`);
reject(error); reject(error);
} }
else { else {
console.log(`Stopped '${serverName}' with PID='${pid}'`); delete runningServers[serverName];
resolve(`Stopped '${serverName}' with PID='${pid}'`); 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) => { serverProcess.on('exit', (code, signal) => {
notifyStatus({ if(code > 0) {
serverName: server.name, notifyStatus({
status: 'errored', serverName: server.name,
message: `Server '${server.name}' has exited with status='${code}'` status: 'errored',
}); message: `Server '${server.name}' has exited with status='${code}'`
});
}
}); });
serverProcess.on('error', (err) => { serverProcess.on('error', (err) => {

View File

@ -30,7 +30,15 @@ export class ServersComponent implements OnInit, OnDestroy {
) {} ) {}
ngOnInit() { ngOnInit() {
const runningServersNames = this.serverManagement.getRunningServers();
this.serverService.findAll().then((servers: Server[]) => { 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); this.serverDatabase.addServers(servers);
}); });

View File

@ -36,6 +36,10 @@ export class ServerManagementService implements OnDestroy {
await this.electronService.remote.require('./local-server.js').stopLocalServer(server); await this.electronService.remote.require('./local-server.js').stopLocalServer(server);
} }
getRunningServers() {
return this.electronService.remote.require('./local-server.js').getRunningServers();
}
ngOnDestroy() { ngOnDestroy() {
if(this.electronService.isElectronApp) { if(this.electronService.isElectronApp) {
this.electronService.ipcRenderer.removeAllListeners(this.statusChannel); this.electronService.ipcRenderer.removeAllListeners(this.statusChannel);