Signal-Desktop/ts/util/BackOff.ts

34 lines
607 B
TypeScript
Raw Normal View History

2021-06-09 22:28:54 +00:00
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
export class BackOff {
private count = 0;
constructor(private readonly timeouts: ReadonlyArray<number>) {}
public get(): number {
return this.timeouts[this.count];
}
public getAndIncrement(): number {
const result = this.get();
if (!this.isFull()) {
this.count += 1;
}
return result;
}
public reset(): void {
this.count = 0;
}
public isFull(): boolean {
return this.count === this.timeouts.length - 1;
}
public getIndex(): number {
return this.count;
}
}