ziron-worker
Version:
69 lines (68 loc) • 2.74 kB
TypeScript
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 {};