@hotmeshio/hotmesh
Version:
Serverless Workflow
37 lines (36 loc) • 2.06 kB
TypeScript
/// <reference types="node" />
import { ILogger } from '../logger';
import { StoreService } from '../store';
import { HookInterface, HookRule } from '../../types/hook';
import { JobCompletionOptions, JobState } from '../../types/job';
import { ProviderClient, ProviderTransaction } from '../../types/provider';
import { WorkListTaskType } from '../../types/task';
declare class TaskService {
store: StoreService<ProviderClient, ProviderTransaction>;
logger: ILogger;
cleanupTimeout: NodeJS.Timeout | null;
isScout: boolean;
errorCount: number;
constructor(store: StoreService<ProviderClient, ProviderTransaction>, logger: ILogger);
processWebHooks(hookEventCallback: HookInterface): Promise<void>;
enqueueWorkItems(keys: string[]): Promise<void>;
registerJobForCleanup(jobId: string, inSeconds: number, options: JobCompletionOptions): Promise<void>;
registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, inSeconds: number, dad: string, transaction?: ProviderTransaction): Promise<void>;
/**
* Should this engine instance play the role of 'scout' on behalf
* of the entire quorum? The scout role is responsible for processing
* task lists on behalf of the collective.
*/
shouldScout(): Promise<boolean>;
/**
* Callback handler that takes an item from a work list and
* processes according to its type
*/
processTimeHooks(timeEventCallback: (jobId: string, gId: string, activityId: string, type: WorkListTaskType) => Promise<void>, listKey?: string): Promise<void>;
cancelCleanup(): void;
getHookRule(topic: string): Promise<HookRule | undefined>;
registerWebHook(topic: string, context: JobState, dad: string, expire: number, transaction?: ProviderTransaction): Promise<string>;
processWebHookSignal(topic: string, data: Record<string, unknown>): Promise<[string, string, string, string] | undefined>;
deleteWebHookSignal(topic: string, data: Record<string, unknown>): Promise<number>;
}
export { TaskService };