UNPKG

ziron-worker

Version:
69 lines (68 loc) 2.74 kB
import { BatchOption, CancelableOption, CancelablePromise, ComplexTypesOption, DataType, ResponseTimeoutOption, ReturnDataTypeOption, SendTimeoutOption } from "ziron-client"; import EventEmitter from "emitix"; import Logger from "./Logger"; type LocalEventEmitter = EventEmitter<{ 'leadershipChange': [boolean]; 'brokersChange': [string[]]; 'sessionIdChange': [string]; 'sessionSharedUpdate': [any, any]; 'error': [Error]; }>; export default class StateClient { private readonly options; private readonly _logger; private readonly _localEmitter; readonly once: LocalEventEmitter['once']; readonly on: LocalEventEmitter['on']; readonly off: LocalEventEmitter['off']; private readonly _emit; private readonly _stateSocket; private _invokeJoinRetryTicker; private _initJoinCalled; get connected(): boolean; readonly stateId?: string; private initJoined; private initJoinResolve; private initJoinReject; readonly initJoin: Promise<void>; /** * @description * Do custom invokes with the state socket. * Be careful only to use custom procedures. * @param procedure * @param data * @param options */ invoke<RDT extends true | false | undefined, C extends boolean | undefined = undefined>(procedure: Exclude<string, '#join' | '#leave'>, data?: any, options?: BatchOption & SendTimeoutOption & CancelableOption<C> & ResponseTimeoutOption & ComplexTypesOption & ReturnDataTypeOption<RDT>): C extends true ? CancelablePromise<RDT extends true ? [any, DataType] : any> : Promise<RDT extends true ? [any, DataType] : any>; /** * @description * Do custom transmits with the state socket. * Be careful only to use custom receivers. * @param receiver * @param data * @param options */ transmit<C extends boolean | undefined = undefined>(receiver: string, data?: any, options?: BatchOption & SendTimeoutOption & CancelableOption<C> & ComplexTypesOption): C extends true ? CancelablePromise<void> : Promise<void>; readonly sessionShared: Record<any, any>; readonly clusterSessionId: string; readonly leader: boolean; get brokers(): string[]; private _currentBrokerUpdate; private readonly _joinData; constructor(options: { joinTokenUri: string; joinTokenSecret: string; sharedData: Record<any, any>; joinPayload: Record<any, any>; id: string; path: string; port: number; }, _logger: Logger); private _invokeJoin; join(): Promise<void>; private _handleBrokerUpdate; private _updateLeadership; private _updateClusterSessionId; private _updateClusterSessionShared; } export {};