@broadcom/endevor-for-zowe-cli
Version:
Endevor Plug-in for Zowe CLI
118 lines • 10.5 kB
JavaScript
;
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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