@atomist/automation-client
Version:
Atomist API for software low-level client
51 lines • 2.85 kB
TypeScript
import * as WebSocket from "ws";
import { Configuration } from "../../../configuration";
import { EventFired } from "../../../HandleEvent";
import { AutomationContextAware, HandlerContext } from "../../../HandlerContext";
import { HandlerResult } from "../../../HandlerResult";
import { AutomationEventListener } from "../../../server/AutomationEventListener";
import { AutomationServer } from "../../../server/AutomationServer";
import { GraphClient } from "../../../spi/graph/GraphClient";
import { MessageClient } from "../../../spi/message/MessageClient";
import { CommandInvocation } from "../../invoker/Payload";
import { AbstractRequestProcessor } from "../AbstractRequestProcessor";
import { CommandIncoming, EventIncoming } from "../RequestProcessor";
import { RegistrationConfirmation, WebSocketRequestProcessor } from "../websocket/WebSocketRequestProcessor";
/**
* A RequestProcessor that delegates to Node.JS Cluster workers to do the actual
* command and event processing.
* @see ClusterWorkerRequestProcessor
*/
export declare class ClusterMasterRequestProcessor extends AbstractRequestProcessor implements WebSocketRequestProcessor {
protected automations: AutomationServer;
protected configuration: Configuration;
protected listeners: AutomationEventListener[];
protected numWorkers: number;
protected maxConcurrentPerWorker: number;
private registration?;
private readonly webSocketLifecycle;
private readonly commands;
private readonly events;
private readonly messages;
private shutdownInitiated;
private replaceWorkers;
private backoffInitiated;
constructor(automations: AutomationServer, configuration: Configuration, listeners?: AutomationEventListener[], numWorkers?: number, maxConcurrentPerWorker?: number);
onRegistration(registration: RegistrationConfirmation): void;
onConnect(ws: WebSocket): void;
onDisconnect(): void;
run(): Promise<any>;
protected invokeCommand(ci: CommandInvocation, ctx: HandlerContext & AutomationContextAware, command: CommandIncoming, callback: (result: Promise<HandlerResult>) => void): void;
protected invokeEvent(ef: EventFired<any>, ctx: HandlerContext & AutomationContextAware, event: EventIncoming, callback: (results: Promise<HandlerResult[]>) => void): void;
protected sendStatusMessage(payload: any, ctx: HandlerContext & AutomationContextAware): Promise<any>;
protected createGraphClient(event: CommandIncoming | EventIncoming): GraphClient;
protected createMessageClient(event: CommandIncoming | EventIncoming): MessageClient;
private assignWorker;
private startMessage;
private queueLength;
private scheduleQueueLength;
private scheduleBackoffCheck;
private reportQueueLength;
private terminateWorkers;
}
//# sourceMappingURL=ClusterMasterRequestProcessor.d.ts.map