1 |
|
2 | import { EventEmitter } from "events";
|
3 | import { NatMap } from "../../cluster/ClusterOptions";
|
4 | import { ConnectionOptions } from "tls";
|
5 | import SentinelIterator from "./SentinelIterator";
|
6 | import { SentinelAddress } from "./types";
|
7 | import AbstractConnector, { ErrorEmitter } from "../AbstractConnector";
|
8 | import { NetStream } from "../../types";
|
9 | interface AddressFromResponse {
|
10 | port: string;
|
11 | ip: string;
|
12 | flags?: string;
|
13 | }
|
14 | declare 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 | };
|
23 | export { SentinelAddress, SentinelIterator };
|
24 | export 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 |
|
49 |
|
50 | sentinelMaxConnections?: number;
|
51 | failoverDetector?: boolean;
|
52 | }
|
53 | export 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 | }
|