53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
|
|
import { WebSocketService } from './websocket.service';
|
|
import { ProcessMessage } from '../message-types/process-message';
|
|
import { filter } from 'rxjs/operators';
|
|
|
|
@Injectable()
|
|
export class ProcessManagerService {
|
|
process_name: string;
|
|
|
|
constructor(private webSocketService: WebSocketService) {}
|
|
|
|
init() {
|
|
this.webSocketService.connect();
|
|
}
|
|
|
|
subscribeCallback(process_name: string, callback: (message: ProcessMessage) => void) {
|
|
this.observeProcessMessage(process_name).subscribe(callback);
|
|
}
|
|
|
|
subscribeSuccessCallback(process_name: string, callback: (message: ProcessMessage) => void) {
|
|
this.observeProcessMessage(process_name).pipe(filter(message => !('error' in message))).subscribe(callback);
|
|
}
|
|
|
|
subscribeErrorCallback(process_name: string, callback: (message: ProcessMessage) => void) {
|
|
this.observeProcessMessage(process_name).pipe(filter(message => 'error' in message)).subscribe(callback);
|
|
}
|
|
|
|
observeProcessMessage(process_name: string) {
|
|
return this.webSocketService.observeKey<ProcessMessage>('process')
|
|
.pipe(filter(message => message.name === process_name));
|
|
}
|
|
|
|
startProcess(process_name: string) {
|
|
this.sendCommand('start', process_name);
|
|
}
|
|
|
|
stopProcess(process_name: string) {
|
|
this.sendCommand('stop', process_name);
|
|
}
|
|
|
|
restartProcess(process_name: string) {
|
|
this.sendCommand('restart', process_name);
|
|
}
|
|
|
|
sendCommand(command: string, process_name: string) {
|
|
this.webSocketService.sendJSON({
|
|
'key': 'process.' + command,
|
|
'name': process_name
|
|
});
|
|
}
|
|
}
|