UNPKG

@broadcom/endevor-for-zowe-cli

Version:

Endevor Plug-in for Zowe CLI

118 lines 10.5 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncUtils = void 0; const imperative_1 = require("@zowe/imperative"); class AsyncUtils { static pooledParallelExec(inputs, callback, maxThreads, progressTitle, progressApi) { return __awaiter(this, void 0, void 0, function* () { const emptyCheck = () => true; return yield this.pooledParallelExecWithRetry(inputs, callback, maxThreads, 0, 0, emptyCheck, progressTitle, progressApi); }); } static pooledParallelExecWithRetry(inputs, callback, maxThreads, retries, retryDelay, retryCheck, progressTitle, progressApi) { return __awaiter(this, void 0, void 0, function* () { if (maxThreads < 1) { throw new imperative_1.ImperativeError({ msg: `AsyncUtils - Invalid thread count specified: ${maxThreads}` }); } if (retries < 0) { throw new imperative_1.ImperativeError({ msg: `AsyncUtils - Invalid retry count specified: ${retries}` }); } if (retryDelay < 0) { throw new imperative_1.ImperativeError({ msg: `AsyncUtils - Invalid retry interval specified: ${retryDelay}` }); } const outputs = []; const promisedTask = { percentComplete: 0, statusMessage: progressTitle ? progressTitle : "working", stageName: imperative_1.TaskStage.IN_PROGRESS }; const workers = []; const counter = { nextIndex: 0, finished: 0, rejected: false, rejection: undefined }; for (let i = 0; i < maxThreads; i++) { workers.push(this.workFunction(inputs, outputs, counter, promisedTask, callback, retries, retryDelay, retryCheck)); } const combinedPromise = new Promise((resolve, reject) => { progressApi === null || progressApi === void 0 ? void 0 : progressApi.startBar({ task: promisedTask }); Promise.all(workers).then(() => { progressApi === null || progressApi === void 0 ? void 0 : progressApi.endBar(); if (counter.rejected) { reject(counter.rejection); } else { resolve(outputs); } }); }); return combinedPromise; }); } static getRecommendedThreadCount(serverConfig) { let recommendation = 1; if (serverConfig == null || serverConfig === undefined) { return recommendation; } else { if (serverConfig.poolMaxSize == null || serverConfig.poolMaxSize === undefined || serverConfig.poolMaxSize == 0) { recommendation = _a.MAX_THREADS_WHEN_POOLING_OFF; } else { if (serverConfig.connectionTimeout != undefined && serverConfig.connectionTimeout > 0) { recommendation = serverConfig.poolMaxSize; } else { recommendation = Math.round(serverConfig.poolMaxSize / 2); } } } return recommendation; } } exports.AsyncUtils = AsyncUtils; _a = AsyncUtils; AsyncUtils.MAX_THREADS_WHEN_POOLING_OFF = 10; AsyncUtils.workFunction = (inputs, outputs, counter, promisedTask, callback, retries, retryDelay, retryCheck) => __awaiter(void 0, void 0, void 0, function* () { let retryCounter = 0; let currentIndex = counter.nextIndex++; while (currentIndex < inputs.length && !counter.rejected) { outputs[currentIndex] = yield callback(inputs[currentIndex]).catch((err) => { counter.rejected = true; counter.rejection = err; }); if (!counter.rejected) { if (!retryCheck(outputs[currentIndex])) { counter.finished++; promisedTask.percentComplete = (counter.finished * 100) / inputs.length; currentIndex = counter.nextIndex++; retryCounter = 0; } else if (retryCounter < retries) { retryCounter++; yield new Promise((resolve) => setTimeout(resolve, retryDelay)); } else { counter.finished++; promisedTask.percentComplete = (counter.finished * 100) / inputs.length; currentIndex = counter.nextIndex++; retryCounter = 0; } } } return true; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXN5bmNVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvQXN5bmNVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBdUJBLGlEQUFvRztBQUdwRyxNQUFhLFVBQVU7SUFhZCxNQUFNLENBQU8sa0JBQWtCLENBQ3BDLE1BQVcsRUFDWCxRQUFrQyxFQUNsQyxVQUFrQixFQUNsQixhQUFzQixFQUN0QixXQUFpQzs7WUFFakMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQzlCLE9BQU8sTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQzNDLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNWLENBQUMsRUFDRCxDQUFDLEVBQ0QsVUFBVSxFQUNWLGFBQWEsRUFDYixXQUFXLENBQ1osQ0FBQztRQUNKLENBQUM7S0FBQTtJQWVNLE1BQU0sQ0FBTywyQkFBMkIsQ0FDN0MsTUFBVyxFQUNYLFFBQWtDLEVBQ2xDLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixVQUFrQixFQUNsQixVQUFrQyxFQUNsQyxhQUFzQixFQUN0QixXQUFpQzs7WUFFakMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSw0QkFBZSxDQUFDO29CQUN4QixHQUFHLEVBQUUsZ0RBQWdELFVBQVUsRUFBRTtpQkFDbEUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksNEJBQWUsQ0FBQztvQkFDeEIsR0FBRyxFQUFFLCtDQUErQyxPQUFPLEVBQUU7aUJBQzlELENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLDRCQUFlLENBQUM7b0JBQ3hCLEdBQUcsRUFBRSxrREFBa0QsVUFBVSxFQUFFO2lCQUNw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