UNPKG

@dolittle/sdk.services

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

36 lines 2.97 kB
"use strict"; // Copyright (c) Dolittle. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.ProcessorTracker = void 0; const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const sdk_resilience_1 = require("@dolittle/sdk.resilience"); const ITrackProcessors_1 = require("./ITrackProcessors"); const WaitingForProcessorsCompletionCancelled_1 = require("./WaitingForProcessorsCompletionCancelled"); /** * Represents an implementation of {@link ITrackProcessors}. */ class ProcessorTracker extends ITrackProcessors_1.ITrackProcessors { constructor() { super(...arguments); this._runningProcessors = new Set(); } /** @inheritdoc */ registerProcessor(processor) { const proxy = new rxjs_1.Subject(); this._runningProcessors.add(proxy); processor.add(() => { this._runningProcessors.delete(proxy); proxy.complete(); }); } /** @inheritdoc */ allProcessorsCompleted(cancellation = sdk_resilience_1.Cancellation.default) { const allCompleted = (0, rxjs_1.merge)(...this._runningProcessors).pipe((0, operators_1.endWith)(true)); const errorOnCancellation = (0, rxjs_1.concat)(cancellation, (0, rxjs_1.throwError)(new WaitingForProcessorsCompletionCancelled_1.WaitingForProcessorsCompletionCancelled())); return errorOnCancellation.pipe((0, operators_1.takeUntil)(allCompleted)).toPromise(); } } exports.ProcessorTracker = ProcessorTracker; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc29yVHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIlByb2Nlc3NvclRyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQUVyRywrQkFBb0Y7QUFDcEYsOENBQW9EO0FBRXBELDZEQUF3RDtBQUV4RCx5REFBc0Q7QUFDdEQsdUdBQW9HO0FBRXBHOztHQUVHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxtQ0FBZ0I7SUFBdEQ7O1FBQ3FCLHVCQUFrQixHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBb0IzRSxDQUFDO0lBbEJHLGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxTQUF1QjtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQU8sRUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsc0JBQXNCLENBQUMsZUFBNkIsNkJBQVksQ0FBQyxPQUFPO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUEsWUFBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUEsbUJBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSxhQUFNLEVBQUMsWUFBWSxFQUFFLElBQUEsaUJBQVUsRUFBQyxJQUFJLGlGQUF1QyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVHLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUEscUJBQVMsRUFBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7Q0FDSjtBQXJCRCw0Q0FxQkMifQ==