@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
JavaScript
;
// 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==