UNPKG

@loaders.gl/core

Version:

Framework-independent loaders for 3D graphics formats

120 lines (95 loc) 3.59 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = parseWithWorker; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _binaryUtils = require("../../javascript-utils/binary-utils"); var _workerFarm2 = _interopRequireDefault(require("../../worker-utils/worker-farm")); var _parse = require("../parse"); var _workerUtils = require("../../worker-utils/worker-utils"); var _workerFarm = null; function getWorkerFarm() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var props = {}; if (options.maxConcurrency) { props.maxConcurrency = options.maxConcurrency; } if (options.onDebug) { props.onDebug = options.onDebug; } if (!_workerFarm) { _workerFarm = new _workerFarm2["default"]({ onMessage: onWorkerMessage }); } _workerFarm.setProps(props); return _workerFarm; } function onWorkerMessage(_x) { return _onWorkerMessage.apply(this, arguments); } function _onWorkerMessage() { _onWorkerMessage = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(_ref) { var worker, data, resolve, reject, result; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: worker = _ref.worker, data = _ref.data, resolve = _ref.resolve, reject = _ref.reject; _context.t0 = data.type; _context.next = _context.t0 === 'done' ? 4 : _context.t0 === 'process' ? 6 : _context.t0 === 'error' ? 17 : 19; break; case 4: resolve(data.result); return _context.abrupt("break", 19); case 6: _context.prev = 6; _context.next = 9; return (0, _parse.parse)(data.arraybuffer, data.options, data.url); case 9: result = _context.sent; worker.postMessage({ type: 'process-done', id: data.id, result: result }, (0, _workerUtils.getTransferList)(result)); _context.next = 16; break; case 13: _context.prev = 13; _context.t1 = _context["catch"](6); worker.postMessage({ type: 'process-error', id: data.id, message: _context.t1.message }); case 16: return _context.abrupt("break", 19); case 17: reject(data.message); return _context.abrupt("break", 19); case 19: case "end": return _context.stop(); } } }, _callee, null, [[6, 13]]); })); return _onWorkerMessage.apply(this, arguments); } function parseWithWorker(workerSource, workerName, data) { var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var context = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var workerFarm = getWorkerFarm(options); options = JSON.parse(JSON.stringify(options)); return workerFarm.process(workerSource, "loaders.gl-".concat(workerName), { arraybuffer: (0, _binaryUtils.toArrayBuffer)(data), options: options, source: 'loaders.gl', type: 'process' }); } //# sourceMappingURL=parse-with-worker.js.map