import { WorkerPlatform, WorkerSpecs } from './worker.types'; export type WorkerMessageType = | 'register' | 'request_task' | 'heartbeat' | 'progress' | 'task_completed' | 'task_failed' | 'disconnect'; export type ServerMessageType = | 'registered' | 'task_assignment' | 'wait' | 'retry' | 'shutdown' | 'error'; // Worker Incoming Messages export interface RegisterMessage { type: 'register'; payload: { workerId?: string; workerName: string; platform: WorkerPlatform; specs?: WorkerSpecs; }; } export interface RequestTaskMessage { type: 'request_task'; payload: { workerId: string; }; } export interface HeartbeatMessage { type: 'heartbeat'; payload: { workerId: string; taskId?: string; progress?: number; rowsProcessed?: number; currentSpeed?: number; }; } export interface ProgressMessage { type: 'progress'; payload: { workerId: string; taskId: string; progress: number; rowsProcessed?: number; currentSpeed?: number; }; } export interface TaskCompletedMessage { type: 'task_completed'; payload: { workerId: string; taskId: string; rowsProcessed?: number; executionTimeMs?: number; resultSummary?: any; }; } export interface TaskFailedMessage { type: 'task_failed'; payload: { workerId: string; taskId: string; error: string; canRetry?: boolean; }; } export interface DisconnectMessage { type: 'disconnect'; payload: { workerId: string; reason?: string; }; } export type IncomingWorkerMessage = | RegisterMessage | RequestTaskMessage | HeartbeatMessage | ProgressMessage | TaskCompletedMessage | TaskFailedMessage | DisconnectMessage; // Server Outgoing Messages export interface RegisteredServerMessage { type: 'registered'; payload: { workerId: string; heartbeatIntervalSeconds: number; leaseDurationSeconds: number; }; } export interface TaskAssignmentServerMessage { type: 'task_assignment'; payload: { taskId: string; startRow: number; endRow: number; startOffset: number; endOffset: number; totalRows: number; leaseUntil: string; attributes: string[]; header: string; }; } export interface WaitServerMessage { type: 'wait'; payload: { reason: string; retryInSeconds: number; }; } export interface RetryServerMessage { type: 'retry'; payload: { taskId: string; reason: string; }; } export interface ShutdownServerMessage { type: 'shutdown'; payload: { reason: string; }; } export interface ErrorServerMessage { type: 'error'; payload: { code: string; message: string; }; } export type OutgoingServerMessage = | RegisteredServerMessage | TaskAssignmentServerMessage | WaitServerMessage | RetryServerMessage | ShutdownServerMessage | ErrorServerMessage;