@loaders.gl/core
Version:
Framework-independent loaders for 3D graphics formats
120 lines (95 loc) • 3.59 kB
JavaScript
;
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