sinch-rtc
Version:
RTC JavaScript/Web SDK
33 lines • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CancellationTokenSource = exports.CancellationError = void 0;
class CancellationError extends Error {
constructor() {
super(...arguments);
this.name = "CancellationError";
this.message = "The operation was cancelled";
}
}
exports.CancellationError = CancellationError;
class CancellationTokenSource {
constructor() {
this.subscribers = new Array();
}
subscribe(subscriber) {
if (this.cancellation) {
subscriber(this.cancellation);
}
else {
this.subscribers.push(subscriber);
}
return () => {
this.subscribers = this.subscribers.filter((s) => s !== subscriber);
};
}
cancel(err = new CancellationError()) {
this.cancellation = err;
this.subscribers.splice(0).forEach((subscriber) => subscriber(err));
}
}
exports.CancellationTokenSource = CancellationTokenSource;
//# sourceMappingURL=CancellationToken.js.map