Commit | Line | Data |
---|---|---|
4c35177b | 1 | /** |
1a81f8af | 2 | * Enumeration of kill behaviors. |
4c35177b | 3 | */ |
97231086 | 4 | export const KillBehaviors: Readonly<{ HARD: 'HARD'; SOFT: 'SOFT' }> = |
59776ec5 | 5 | Object.freeze({ |
59776ec5 | 6 | /** |
152e87a8 | 7 | * If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker will be deleted. |
59776ec5 | 8 | */ |
3a502712 | 9 | HARD: 'HARD', |
97231086 JB |
10 | /** |
11 | * If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker **wont** be deleted. | |
12 | */ | |
13 | SOFT: 'SOFT', | |
59776ec5 | 14 | } as const) |
1a81f8af S |
15 | |
16 | /** | |
17 | * Kill behavior. | |
18 | */ | |
19 | export type KillBehavior = keyof typeof KillBehaviors | |
20 | ||
df9aaf20 JB |
21 | /** |
22 | * Handler called when a worker is killed. | |
23 | */ | |
97231086 | 24 | export type KillHandler = () => Promise<void> | void |
df9aaf20 | 25 | |
729c563d S |
26 | /** |
27 | * Options for workers. | |
28 | */ | |
325f50bc | 29 | export interface WorkerOptions { |
968dbbe7 JB |
30 | /** |
31 | * `killBehavior` dictates if your worker will be deleted in case a task is active on it. | |
32 | * | |
152e87a8 JB |
33 | * - SOFT: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker **won't** be deleted. |
34 | * - HARD: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker will be deleted. | |
968dbbe7 JB |
35 | * |
36 | * This option only apply to the newly created workers. | |
968dbbe7 JB |
37 | * @defaultValue KillBehaviors.SOFT |
38 | */ | |
39 | killBehavior?: KillBehavior | |
97231086 JB |
40 | /** |
41 | * The function to call when a worker is killed. | |
42 | * @defaultValue `() => {}` | |
43 | */ | |
44 | killHandler?: KillHandler | |
325f50bc | 45 | /** |
3c18d144 | 46 | * Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5. |
1a81f8af | 47 | * |
729c563d | 48 | * After this time, newly created workers will be terminated. |
b0a4db63 | 49 | * The last active time of your worker will be updated when it terminates a task. |
1a81f8af S |
50 | * |
51 | * - If `killBehavior` is set to `KillBehaviors.HARD` this value represents also the timeout for the tasks that you submit to the pool, | |
3a502712 | 52 | * when this timeout expires your tasks is interrupted before completion and removed. The worker is killed if is not part of the minimum size of the pool. |
15eacd5d | 53 | * - If `killBehavior` is set to `KillBehaviors.SOFT` your tasks have no timeout and your workers will not be terminated until your task is completed. |
1ff6b9de | 54 | * @defaultValue 60000 |
325f50bc S |
55 | */ |
56 | maxInactiveTime?: number | |
325f50bc | 57 | } |