All files / server controller.js

100% Statements 20/20
100% Branches 4/4
100% Functions 5/5
100% Lines 20/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57                  6x       1x     3x 3x       3x 3x 1x 1x     2x 1x 1x   1x 1x 1x   1x               1x   1x 1x 1x     1x            
import {
  Service
} from "./service.js"
import {
  logger
} from "./util.js"
 
export class Controller {
  constructor() {
    this.service = new Service()
  }
 
  async getFileStream(filename) {
    return this.service.getFileStream(filename)
  }
  async handleCommand({ command }) {
    logger.info(`command received: ${command}`)
    const result = {
      result: 'ok'
    }
 
    const cmd = command.toLowerCase()
    if(cmd.includes('start')) {
      this.service.startStreamming()
      return result
    }
 
    if(cmd.includes('stop')) {
      this.service.stopStreamming()
      return result
    }
    const chosenFx = await this.service.readFxByName(cmd)
    logger.info(`added fx to service: ${chosenFx}`)
    this.service.appendFxStream(chosenFx)
    
    return result
    
  }
 
  createClientStream() {
    const {
      id,
      clientStream
    } = this.service.createClientStream()
 
    const onClose = () => {
      logger.info(`closing connection of ${id}`)
      this.service.removeClientStream(id)
    }
 
    return {
      stream: clientStream,
      onClose
    }
  }
 
}