@dolittle/sdk.resilience
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
48 lines • 2.94 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.Cancellation = void 0;
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
/**
* Represents a possible cancellation.
*/
class Cancellation extends rxjs_1.Observable {
/**
* Creates a new instance of the {@link Cancellation} class.
* @param {Observable<void>} source - The source observable indicates a cancellation has been requested by completing.
*/
constructor(source) {
super((subscriber) => {
const subscription = this._subject.subscribe(subscriber);
return () => {
subscription.unsubscribe();
};
});
this._subject = new rxjs_1.Subject();
this._cancelled = false;
source.subscribe(this._subject);
}
/**
* Gets a value indicating wheter or not the {@link Cancellation} is cancelled.
*/
get cancelled() {
return this._subject.isStopped;
}
/**
* Creates a new {@link Cancellation} that is cancelled after the specified amount of time.
* @param {number} time - The time in milliseconds until the cancellation occurs.
* @returns {Cancellation} The scheduled cancellation.
*/
static after(time) {
const source = (0, rxjs_1.timer)(time).pipe((0, operators_1.ignoreElements)());
return new Cancellation(source);
}
}
exports.Cancellation = Cancellation;
/**
* Default {@link Cancellation}, which is never.
*/
Cancellation.default = new Cancellation(rxjs_1.NEVER);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuY2VsbGF0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLyIsInNvdXJjZXMiOlsiQ2FuY2VsbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7QUFFckcsK0JBQXlEO0FBQ3pELDhDQUFnRDtBQUVoRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGlCQUFnQjtJQUk5Qzs7O09BR0c7SUFDSCxZQUFZLE1BQXdCO1FBQ2hDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sR0FBRyxFQUFFO2dCQUNSLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQWJVLGFBQVEsR0FBRyxJQUFJLGNBQU8sRUFBUSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFhdkIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBWTtRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFBLFlBQUssRUFBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBQSwwQkFBYyxHQUFFLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBdENMLG9DQXVDQztBQWRHOztHQUVHO0FBQ0ksb0JBQU8sR0FBaUIsSUFBSSxZQUFZLENBQUMsWUFBSyxDQUFDLENBQUMifQ==