aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/vendor/async-mutex/semaphoreinterface.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/vendor/async-mutex/semaphoreinterface.ts')
-rw-r--r--src/lib/vendor/async-mutex/semaphoreinterface.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/lib/vendor/async-mutex/semaphoreinterface.ts b/src/lib/vendor/async-mutex/semaphoreinterface.ts
new file mode 100644
index 0000000..bbbdc6b
--- /dev/null
+++ b/src/lib/vendor/async-mutex/semaphoreinterface.ts
@@ -0,0 +1,34 @@
+export interface SemaphoreInterface {
+ acquire(
+ weight?: number,
+ priority?: number
+ ): Promise<[number, SemaphoreInterface.Releaser]>;
+
+ runExclusive<T>(
+ callback: SemaphoreInterface.Worker<T>,
+ weight?: number,
+ priority?: number
+ ): Promise<T>;
+
+ waitForUnlock(weight?: number, priority?: number): Promise<void>;
+
+ isLocked(): boolean;
+
+ getValue(): number;
+
+ setValue(value: number): void;
+
+ release(weight?: number): void;
+
+ cancel(): void;
+}
+
+export namespace SemaphoreInterface {
+ export interface Releaser {
+ (): void;
+ }
+
+ export interface Worker<T> {
+ (value: number): Promise<T> | T;
+ }
+}