UNPKG

ajsfw

Version:
62 lines (61 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var messageTransport = require("../message-transport"); var exceptions = require("./exceptions"); exports.ajsWorkerInstance = null; var AjsWebWorker = (function (_super) { __extends(AjsWebWorker, _super); function AjsWebWorker(workerScriptUrl, workerLibraries, initCode) { var _this = _super.call(this) || this; _this.__initialized = false; _this.__initState = 0; _this.__workerLibraries = workerLibraries; _this.__workerInitCode = _this.__getFunctionCode(initCode); _this.__worker = new Worker(workerScriptUrl); _this.__worker.addEventListener("message", function (event) { _this._receive(event); }); _this.__initialize(); return _this; } AjsWebWorker.prototype._receive = function (event) { if (!this.__initialized) { this.__initialize(event); return; } this._onReceived(event.data); }; AjsWebWorker.prototype._send = function (message) { if (!this.__initialized) { throw new exceptions.AjsWorkerNotInitializedException(); } this.__worker.postMessage(message); }; AjsWebWorker.prototype.__initialize = function (event) { switch (this.__initState) { case 0: this.__worker.postMessage(this.__workerLibraries); this.__initState++; break; case 1: if (event === undefined || event.data === undefined || event.data !== "librariesLoaded") { throw new exceptions.UnexpectedAjsWorkerInitializationResponseException(); } this.__worker.postMessage(this.__workerInitCode); this.__initState++; break; case 2: this.__initialized = true; if (event === undefined || event.data === undefined || event.data !== "initDone") { throw new exceptions.UnexpectedAjsWorkerInitializationResponseException(); } break; default: throw new exceptions.InvalidAjsWorkerInitializationStateException(); } }; AjsWebWorker.prototype.__getFunctionCode = function (fn) { var code = "(" + fn.toString() + ")()"; return code; }; return AjsWebWorker; }(messageTransport.TransportInterface)); exports.AjsWebWorker = AjsWebWorker;