redis-semaphore
Version:
Distributed mutex and semaphore based on Redis
32 lines (31 loc) • 1.12 kB
TypeScript
/// <reference types="node" />
import { LockLostCallback, LockOptions } from './types';
interface AcquireOptions {
identifier: string;
lockTimeout: number;
acquireTimeout: number;
retryInterval: number;
}
export declare abstract class Lock {
protected abstract _kind: string;
protected abstract _key: string;
protected _identifier: string;
protected _acquireOptions: AcquireOptions;
protected _refreshTimeInterval: number;
protected _refreshInterval?: ReturnType<typeof setInterval>;
protected _refreshing: boolean;
protected _acquired: boolean;
protected _onLockLost: LockLostCallback;
protected abstract _refresh(): Promise<boolean>;
protected abstract _acquire(): Promise<boolean>;
protected abstract _release(): Promise<void>;
constructor({ lockTimeout, acquireTimeout, retryInterval, refreshInterval, onLockLost }?: LockOptions);
get identifier(): string;
get isAcquired(): boolean;
private _startRefresh;
private _stopRefresh;
private _processRefresh;
acquire(): Promise<void>;
release(): Promise<void>;
}
export {};