UNPKG

ts-safe-redis-leader

Version:

Redis leader election implementation that does not have any race conditions in Typescript

34 lines (33 loc) 1.02 kB
import IORedis from "ioredis"; import { MainEmitter } from "./emitter"; export declare enum EmitterEnum { NOT_ELECTED = "notElected", ELECTED = "elected", DEMOTED = "demoted", ERROR = "error", RENEW = "renew" } export declare class SafeRedisLeader { isStarted: boolean; wasLeading: boolean; canLead: boolean; emitter: MainEmitter; id: string; renewTimeoutId: ReturnType<typeof setTimeout>; electTimeoutId: ReturnType<typeof setTimeout>; asyncRedis: IORedis.Redis; ttl: number; wait: number; key: IORedis.KeyType; constructor(asyncRedis: IORedis.Redis, ttl: number, wait: number, key: IORedis.KeyType); renew(): Promise<void>; runElection(): Promise<void>; elect(): Promise<void>; isLeader(): Promise<boolean>; stop(): Promise<void>; on(name: string, fn: () => void): void; off(name: string, fn: () => void): void; once(name: string, fn: () => void): void; removeAllListeners(): void; shutdown(): Promise<void>; }