dev@40: /** dev@40: * Created by lucas on 01/12/2016. dev@40: */ dev@40: dev@44: import {ListResponse, EmscriptenProxy} from 'piper'; dev@44: import {PiperSimpleClient} from 'piper/HigherLevelUtilities'; dev@44: import { VampExamplePlugins } from 'piper/ext/VampExamplePluginsModule'; dev@62: import { VampTestPlugin } from 'piper/ext/VampTestPluginModule'; dev@44: dev@44: dev@40: // TODO TypeScript has a .d.ts file for webworkers, but for some reason it clashes with the typings for dom and causes compiler errors dev@40: interface WorkerGlobalScope { dev@40: onmessage: (this: this, ev: MessageEvent) => any; dev@40: postMessage(data: any): void; dev@40: } dev@40: dev@40: interface MessageEvent { dev@40: readonly data: any; dev@40: } dev@40: dev@40: export default class FeatureExtractionWorker { dev@40: private workerScope: WorkerGlobalScope; dev@44: private piperClient: PiperSimpleClient; dev@40: dev@40: constructor(workerScope: WorkerGlobalScope) { dev@40: this.workerScope = workerScope; dev@62: this.piperClient = new PiperSimpleClient(new EmscriptenProxy(VampTestPlugin())); dev@44: this.workerScope.onmessage = (ev: MessageEvent) => { dev@47: const sendResponse = (result) => this.workerScope.postMessage({ dev@47: method: ev.data.method, dev@47: result: result dev@47: }); dev@44: switch (ev.data.method) { dev@44: case 'list': dev@47: this.piperClient.list({}).then(sendResponse); dev@47: break; dev@47: case 'process': dev@47: this.piperClient.process(ev.data.params).then(sendResponse); dev@62: break; dev@62: case 'collect': dev@62: this.piperClient.collect(ev.data.params).then(sendResponse); dev@44: } dev@44: }; dev@40: } dev@44: dev@40: }