Mercurial > hg > ugly-duckling
view src/app/services/feature-extraction/FeatureExtractionWorker.ts @ 62:2171dd56756c
Use VampTestPlugin for now. Also set up Collect method calls for the worker. Currently use the same stream for both process and collect extraction.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Fri, 09 Dec 2016 14:06:04 +0000 |
parents | 933c64ebcd13 |
children | 270f59ef3b83 |
line wrap: on
line source
/** * Created by lucas on 01/12/2016. */ import {ListResponse, EmscriptenProxy} from 'piper'; import {PiperSimpleClient} from 'piper/HigherLevelUtilities'; import { VampExamplePlugins } from 'piper/ext/VampExamplePluginsModule'; import { VampTestPlugin } from 'piper/ext/VampTestPluginModule'; // TODO TypeScript has a .d.ts file for webworkers, but for some reason it clashes with the typings for dom and causes compiler errors interface WorkerGlobalScope { onmessage: (this: this, ev: MessageEvent) => any; postMessage(data: any): void; } interface MessageEvent { readonly data: any; } export default class FeatureExtractionWorker { private workerScope: WorkerGlobalScope; private piperClient: PiperSimpleClient; constructor(workerScope: WorkerGlobalScope) { this.workerScope = workerScope; this.piperClient = new PiperSimpleClient(new EmscriptenProxy(VampTestPlugin())); this.workerScope.onmessage = (ev: MessageEvent) => { const sendResponse = (result) => this.workerScope.postMessage({ method: ev.data.method, result: result }); switch (ev.data.method) { case 'list': this.piperClient.list({}).then(sendResponse); break; case 'process': this.piperClient.process(ev.data.params).then(sendResponse); break; case 'collect': this.piperClient.collect(ev.data.params).then(sendResponse); } }; } }