ocean-subgraph/src/lzma/lzma-helper.ts

43 lines
1.4 KiB
TypeScript

import { LZMA } from './lzma'
export class LZMAHelper {
static decoder: LZMA = new LZMA()
static decoderAsync: Worker = new Worker('LZMAWorker.min.js')
static callback: Function
static ENCODE: number = 1
static DECODE: number = 2
static init(): void {
var command = 0
LZMAHelper.decoderAsync.onmessage = function(e) {
if (command == 0) {
command = e.data
} else if (command == LZMAHelper.ENCODE) {
command = 0 //encode not implemented
} else if (command == LZMAHelper.DECODE) {
command = 0
LZMAHelper.callback(e.data)
LZMAHelper.callback = null
}
}
}
static encode(data: ArrayBuffer): ArrayBuffer {
return null
}
static decode(data: ArrayBuffer): ArrayBuffer {
return LZMAHelper.decoder.decode(new Uint8Array(data)).buffer
}
static encodeAsync(data: ArrayBuffer, _callback: Function): void {}
static decodeAsync(data: ArrayBuffer, _callback: Function): void {
if (LZMAHelper.callback == null) {
LZMAHelper.callback = _callback
LZMAHelper.decoderAsync.postMessage(LZMAHelper.DECODE)
LZMAHelper.decoderAsync.postMessage(data, [data])
} else {
console.log('Warning! Another LZMA decoding is running...')
}
}
}
LZMAHelper.init()