UNPKG

@loaders.gl/worker-utils

Version:

Utilities for running tasks on worker threads

80 lines (79 loc) 2.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _workerPool = _interopRequireDefault(require("./worker-pool")); var _workerThread = _interopRequireDefault(require("./worker-thread")); const DEFAULT_PROPS = { maxConcurrency: 3, maxMobileConcurrency: 1, reuseWorkers: true, onDebug: () => {} }; class WorkerFarm { static isSupported() { return _workerThread.default.isSupported(); } static getWorkerFarm() { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({}); WorkerFarm._workerFarm.setProps(props); return WorkerFarm._workerFarm; } constructor(props) { (0, _defineProperty2.default)(this, "props", void 0); (0, _defineProperty2.default)(this, "workerPools", new Map()); this.props = { ...DEFAULT_PROPS }; this.setProps(props); this.workerPools = new Map(); } destroy() { for (const workerPool of this.workerPools.values()) { workerPool.destroy(); } this.workerPools = new Map(); } setProps(props) { this.props = { ...this.props, ...props }; for (const workerPool of this.workerPools.values()) { workerPool.setProps(this._getWorkerPoolProps()); } } getWorkerPool(options) { const { name, source, url } = options; let workerPool = this.workerPools.get(name); if (!workerPool) { workerPool = new _workerPool.default({ name, source, url }); workerPool.setProps(this._getWorkerPoolProps()); this.workerPools.set(name, workerPool); } return workerPool; } _getWorkerPoolProps() { return { maxConcurrency: this.props.maxConcurrency, maxMobileConcurrency: this.props.maxMobileConcurrency, reuseWorkers: this.props.reuseWorkers, onDebug: this.props.onDebug }; } } exports.default = WorkerFarm; (0, _defineProperty2.default)(WorkerFarm, "_workerFarm", void 0); //# sourceMappingURL=worker-farm.js.map