Mercurial > hg > ugly-duckling
annotate src/app/services/feature-extraction/FeatureExtractionWorker.ts @ 47:933c64ebcd13
Some extraction logic in place.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Mon, 05 Dec 2016 16:57:34 +0000 |
parents | 13f5f228ed98 |
children | 2171dd56756c |
rev | line source |
---|---|
dev@40 | 1 /** |
dev@40 | 2 * Created by lucas on 01/12/2016. |
dev@40 | 3 */ |
dev@40 | 4 |
dev@44 | 5 import {ListResponse, EmscriptenProxy} from 'piper'; |
dev@44 | 6 import {PiperSimpleClient} from 'piper/HigherLevelUtilities'; |
dev@44 | 7 import { VampExamplePlugins } from 'piper/ext/VampExamplePluginsModule'; |
dev@44 | 8 |
dev@44 | 9 |
dev@40 | 10 // 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 | 11 interface WorkerGlobalScope { |
dev@40 | 12 onmessage: (this: this, ev: MessageEvent) => any; |
dev@40 | 13 postMessage(data: any): void; |
dev@40 | 14 } |
dev@40 | 15 |
dev@40 | 16 interface MessageEvent { |
dev@40 | 17 readonly data: any; |
dev@40 | 18 } |
dev@40 | 19 |
dev@40 | 20 export default class FeatureExtractionWorker { |
dev@40 | 21 private workerScope: WorkerGlobalScope; |
dev@44 | 22 private piperClient: PiperSimpleClient; |
dev@40 | 23 |
dev@40 | 24 constructor(workerScope: WorkerGlobalScope) { |
dev@40 | 25 this.workerScope = workerScope; |
dev@44 | 26 this.piperClient = new PiperSimpleClient(new EmscriptenProxy(VampExamplePlugins())); |
dev@44 | 27 this.workerScope.onmessage = (ev: MessageEvent) => { |
dev@47 | 28 const sendResponse = (result) => this.workerScope.postMessage({ |
dev@47 | 29 method: ev.data.method, |
dev@47 | 30 result: result |
dev@47 | 31 }); |
dev@44 | 32 switch (ev.data.method) { |
dev@44 | 33 case 'list': |
dev@47 | 34 this.piperClient.list({}).then(sendResponse); |
dev@47 | 35 break; |
dev@47 | 36 case 'process': |
dev@47 | 37 this.piperClient.process(ev.data.params).then(sendResponse); |
dev@44 | 38 } |
dev@44 | 39 }; |
dev@40 | 40 } |
dev@44 | 41 |
dev@40 | 42 } |