UNPKG

2.25 kBTypeScriptView Raw
1/// <reference types="node" />
2import { EventEmitter } from "events";
3import { NatMap } from "../../cluster/ClusterOptions";
4import { ConnectionOptions } from "tls";
5import SentinelIterator from "./SentinelIterator";
6import { SentinelAddress } from "./types";
7import AbstractConnector, { ErrorEmitter } from "../AbstractConnector";
8import { NetStream } from "../../types";
9interface AddressFromResponse {
10 port: string;
11 ip: string;
12 flags?: string;
13}
14declare type PreferredSlaves = ((slaves: AddressFromResponse[]) => AddressFromResponse | null) | Array<{
15 port: string;
16 ip: string;
17 prio?: number;
18}> | {
19 port: string;
20 ip: string;
21 prio?: number;
22};
23export { SentinelAddress, SentinelIterator };
24export interface SentinelConnectionOptions {
25 /**
26 * Master group name of the Sentinel
27 */
28 name?: string;
29 /**
30 * @default "master"
31 */
32 role?: "master" | "slave";
33 tls?: ConnectionOptions;
34 sentinelUsername?: string;
35 sentinelPassword?: string;
36 sentinels?: Array<Partial<SentinelAddress>>;
37 sentinelRetryStrategy?: (retryAttempts: number) => number | void | null;
38 sentinelReconnectStrategy?: (retryAttempts: number) => number | void | null;
39 preferredSlaves?: PreferredSlaves;
40 connectTimeout?: number;
41 disconnectTimeout?: number;
42 sentinelCommandTimeout?: number;
43 enableTLSForSentinelMode?: boolean;
44 sentinelTLS?: ConnectionOptions;
45 natMap?: NatMap;
46 updateSentinels?: boolean;
47 /**
48 * @default 10
49 */
50 sentinelMaxConnections?: number;
51 failoverDetector?: boolean;
52}
53export default class SentinelConnector extends AbstractConnector {
54 protected options: SentinelConnectionOptions;
55 emitter: EventEmitter | null;
56 protected sentinelIterator: SentinelIterator;
57 private retryAttempts;
58 private failoverDetector;
59 constructor(options: SentinelConnectionOptions);
60 check(info: {
61 role?: string;
62 }): boolean;
63 disconnect(): void;
64 connect(eventEmitter: ErrorEmitter): Promise<NetStream>;
65 private updateSentinels;
66 private resolveMaster;
67 private resolveSlave;
68 private sentinelNatResolve;
69 private connectToSentinel;
70 private resolve;
71 private initFailoverDetector;
72}