mirror of
				https://github.com/avatao-content/frontend-tutorial-framework
				synced 2025-11-04 12:22:54 +00:00 
			
		
		
		
	Update services according to the new API
This commit is contained in:
		@@ -1,7 +1,9 @@
 | 
			
		||||
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
 | 
			
		||||
// All Rights Reserved. See LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
export class FSMUpdate {
 | 
			
		||||
import { WebSocketMessage } from './websocket-message';
 | 
			
		||||
 | 
			
		||||
export interface FSMUpdate extends WebSocketMessage {
 | 
			
		||||
  current_state: string;
 | 
			
		||||
  valid_transitions: object;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
 | 
			
		||||
// All Rights Reserved. See LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
import { CommandMessage } from './command-message';
 | 
			
		||||
import { LogMessage } from './log-message';
 | 
			
		||||
import { WebSocketMessage } from './websocket-message';
 | 
			
		||||
 | 
			
		||||
export interface ProcessCommand extends CommandMessage, LogMessage {
 | 
			
		||||
  process_name: string;
 | 
			
		||||
export interface ProcessCommand extends WebSocketMessage, LogMessage {
 | 
			
		||||
  name: string;
 | 
			
		||||
  error?: string;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
 | 
			
		||||
// All Rights Reserved. See LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
import { CommandMessage } from './command-message';
 | 
			
		||||
import { LogMessage } from './log-message';
 | 
			
		||||
import { WebSocketMessage } from './websocket-message';
 | 
			
		||||
 | 
			
		||||
export interface ProcessLogCommand extends CommandMessage, LogMessage {}
 | 
			
		||||
export interface ProcessLogCommand extends WebSocketMessage, LogMessage {}
 | 
			
		||||
 
 | 
			
		||||
@@ -14,9 +14,9 @@ export class FSMUpdateService {
 | 
			
		||||
  constructor(private websocketService: WebSocketService) {}
 | 
			
		||||
 | 
			
		||||
  public init(): void {
 | 
			
		||||
    this.websocketService.observeKey<FSMUpdate>('FSMUpdate').subscribe((event) => {
 | 
			
		||||
      this.current_state = event.data.current_state;
 | 
			
		||||
      this.valid_transitions = event.data.valid_transitions;
 | 
			
		||||
    this.websocketService.observeKey<FSMUpdate>('fsm.announce').subscribe((event) => {
 | 
			
		||||
      this.current_state = event.current_state;
 | 
			
		||||
      this.valid_transitions = event.valid_transitions;
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,25 +3,20 @@
 | 
			
		||||
 | 
			
		||||
import { Injectable } from '@angular/core';
 | 
			
		||||
import { WebSocketService } from './websocket.service';
 | 
			
		||||
import { LogMessage } from '../message-types/log-message';
 | 
			
		||||
import { ProcessLogCommand } from '../message-types/process-log-command';
 | 
			
		||||
import { config } from '../config';
 | 
			
		||||
import { BehaviorSubject } from 'rxjs';
 | 
			
		||||
import { LogMessage } from '../message-types/log-message';
 | 
			
		||||
import { CommandMessage } from '../message-types/command-message';
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class ProcessLogService {
 | 
			
		||||
  newLogs = new BehaviorSubject<LogMessage>(config.console.defaultLogs);
 | 
			
		||||
  showLiveLogs = config.console.showLiveLogs;
 | 
			
		||||
 | 
			
		||||
  command_handlers = {
 | 
			
		||||
    'new_log': this.newLogsHandler.bind(this)
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  constructor(private webSocketService: WebSocketService) {
 | 
			
		||||
    this.webSocketService.connect();
 | 
			
		||||
    this.webSocketService.observeKey<CommandMessage>('processlog').subscribe(
 | 
			
		||||
      (event) => this.command_handlers[event.data.command](event.data)
 | 
			
		||||
    this.webSocketService.observeKey<ProcessLogCommand>('log.new').subscribe(
 | 
			
		||||
      (event) => this.newLogsHandler(event)
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,12 +6,9 @@ import { Injectable } from '@angular/core';
 | 
			
		||||
import { WebSocketService } from './websocket.service';
 | 
			
		||||
import { ProcessCommand } from '../message-types/process-command';
 | 
			
		||||
import { filter } from 'rxjs/operators';
 | 
			
		||||
import { WebSocketMessage } from '../message-types/websocket-message';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class ProcessManagerService {
 | 
			
		||||
  key = 'processmanager';
 | 
			
		||||
  process_name: string;
 | 
			
		||||
 | 
			
		||||
  constructor(private webSocketService: WebSocketService) {}
 | 
			
		||||
@@ -20,25 +17,21 @@ export class ProcessManagerService {
 | 
			
		||||
    this.webSocketService.connect();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  subscribeCallback(process_name: string, callback: (event: WebSocketMessage<ProcessCommand>) => void) {
 | 
			
		||||
  subscribeCallback(process_name: string, callback: (event: ProcessCommand) => void) {
 | 
			
		||||
    this.observeProcessMessage(process_name).subscribe(callback);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  subscribeSuccessCallback(process_name: string, callback: (event: WebSocketMessage<ProcessCommand>) => void) {
 | 
			
		||||
    this.observeProcessMessage(process_name).pipe(filter(message => !('error' in message.data))).subscribe(callback);
 | 
			
		||||
  subscribeSuccessCallback(process_name: string, callback: (event: ProcessCommand) => void) {
 | 
			
		||||
    this.observeProcessMessage(process_name).pipe(filter(message => !('error' in message))).subscribe(callback);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  subscribeErrorCallback(process_name: string, callback: (event: WebSocketMessage<ProcessCommand>) => void) {
 | 
			
		||||
    this.observeProcessMessage(process_name).pipe(filter(message => 'error' in message.data)).subscribe(callback);
 | 
			
		||||
  subscribeErrorCallback(process_name: string, callback: (event: ProcessCommand) => void) {
 | 
			
		||||
    this.observeProcessMessage(process_name).pipe(filter(message => 'error' in message)).subscribe(callback);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  observeProcessMessage(process_name: string) {
 | 
			
		||||
    return this.webSocketService.observeKey<ProcessCommand>(this.key)
 | 
			
		||||
      .pipe(filter(message => message.data.process_name === process_name));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendCommand(command: string, process_name: string) {
 | 
			
		||||
    this.webSocketService.send(this.key, {'command': command, 'process_name': process_name});
 | 
			
		||||
    return this.webSocketService.observeKey<ProcessCommand>('process')
 | 
			
		||||
      .pipe(filter(message => message.name === process_name));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  startProcess(process_name: string) {
 | 
			
		||||
@@ -52,4 +45,11 @@ export class ProcessManagerService {
 | 
			
		||||
  restartProcess(process_name: string) {
 | 
			
		||||
    this.sendCommand('restart', process_name);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendCommand(command: string, process_name: string) {
 | 
			
		||||
    this.webSocketService.sendJSON({
 | 
			
		||||
      'key': 'process.'+command,
 | 
			
		||||
      'name': process_name
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user