index.d.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /// <reference types="node" />
  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. * @default 10
  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. }