@loaders.gl/core
Version:
Framework-independent loaders for 3D graphics formats
103 lines (86 loc) • 3.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _workerPool = _interopRequireDefault(require("./worker-pool"));
var DEFAULT_MAX_CONCURRENCY = 5;
var WorkerFarm = function () {
function WorkerFarm(_ref) {
var _ref$maxConcurrency = _ref.maxConcurrency,
maxConcurrency = _ref$maxConcurrency === void 0 ? DEFAULT_MAX_CONCURRENCY : _ref$maxConcurrency,
onMessage = _ref.onMessage,
_ref$onDebug = _ref.onDebug,
onDebug = _ref$onDebug === void 0 ? function () {} : _ref$onDebug;
(0, _classCallCheck2["default"])(this, WorkerFarm);
this.maxConcurrency = maxConcurrency;
this.onMessage = onMessage;
this.onDebug = onDebug;
this.workerPools = new Map();
}
(0, _createClass2["default"])(WorkerFarm, [{
key: "setProps",
value: function setProps(props) {
if ('maxConcurrency' in props) {
this.maxConcurrency = props.maxConcurrency;
}
if ('onDebug' in props) {
this.onDebug = props.onDebug;
}
}
}, {
key: "destroy",
value: function destroy() {
this.workerPools.forEach(function (workerPool) {
return workerPool.destroy();
});
}
}, {
key: "process",
value: function () {
var _process = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(workerSource, workerName, data) {
var workerPool;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
workerPool = this._getWorkerPool(workerSource, workerName);
return _context.abrupt("return", workerPool.process(data));
case 2:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function process(_x, _x2, _x3) {
return _process.apply(this, arguments);
}
return process;
}()
}, {
key: "_getWorkerPool",
value: function _getWorkerPool(workerSource, workerName) {
var workerPool = this.workerPools.get(workerName);
if (!workerPool) {
workerPool = new _workerPool["default"]({
source: workerSource,
name: workerName,
onMessage: this.onMessage,
maxConcurrency: this.maxConcurrency,
onDebug: this.onDebug
});
this.workerPools.set(workerName, workerPool);
}
return workerPool;
}
}]);
return WorkerFarm;
}();
exports["default"] = WorkerFarm;
//# sourceMappingURL=worker-farm.js.map