import { Chalk } from 'chalk'; import { MaybeTimeDuration } from 'typed-duration'; import * as ZB from '../lib/interfaces-1.0'; import { StatefulLogInterceptor } from '../lib/StatefulLogInterceptor'; import { ConnectionStatusEvent, ZBClient } from '../zb/ZBClient'; import { ZBClientOptions } from './interfaces-published-contract'; import { TypedEmitter } from './TypedEmitter'; export interface ZBWorkerBaseConstructor { grpcClient: ZB.ZBGrpc; id: string | null; taskType: string; options: ZB.ZBWorkerOptions & ZBClientOptions; idColor: Chalk; zbClient: ZBClient; log: StatefulLogInterceptor; } export interface ZBBatchWorkerConstructorConfig extends ZBWorkerBaseConstructor { options: ZB.ZBWorkerOptions & ZBClientOptions & { jobBatchMaxTime: number; }; taskHandler: ZB.ZBBatchWorkerTaskHandler; } export interface ZBWorkerConstructorConfig extends ZBWorkerBaseConstructor { taskHandler: ZB.ZBWorkerTaskHandler; } export declare class ZBWorkerBase extends TypedEmitter { private static readonly DEFAULT_JOB_ACTIVATION_TIMEOUT; private static readonly DEFAULT_MAX_ACTIVE_JOBS; activeJobs: number; grpcClient: ZB.ZBGrpc; maxJobsToActivate: number; jobBatchMinSize: number; taskType: string; timeout: MaybeTimeDuration; pollCount: number; protected zbClient: ZBClient; protected logger: StatefulLogInterceptor; protected taskHandler: ZB.ZBBatchWorkerTaskHandler | ZB.ZBWorkerTaskHandler; protected cancelWorkflowOnException: boolean; private closeCallback?; private closePromise?; private closing; private closed; private id; private longPoll; private debugMode; private capacityEmitter; private stalled; private connected; private readied; private jobStream?; private activeJobsThresholdForReactivation; private pollInterval; private pollLoop; private pollMutex; private backPressureRetryCount; private fetchVariable; private tenantId?; constructor({ grpcClient, id, log, options, taskHandler, taskType, zbClient, }: ZBBatchWorkerConstructorConfig | ZBWorkerConstructorConfig); /** * Returns a promise that the worker has stopped accepting tasks and * has drained all current active tasks. Will reject if you try to call it more than once. */ close(timeout?: number): Promise; log(msg: any): void; debug(msg: any): void; error(msg: any): void; protected drainOne(): void; protected handleJobs(_: ZB.Job[]): void; protected makeCompleteHandlers(thisJob: ZB.Job): ZB.JobCompletionInterface & ZB.JobCompletionInterface; private failJob; private completeJob; private errorJob; private handleStreamEnd; private poll; private activateJobs; private handleJobResponse; }