24145627c18405c157c3903c8dd773808627795e
1 import { WorkerOptions
, WorkerProcessType
} from
'../types/Worker';
3 import Utils from
'../utils/Utils';
4 import WorkerDynamicPool from
'./WorkerDynamicPool';
5 import WorkerSet from
'./WorkerSet';
6 import WorkerStaticPool from
'./WorkerStaticPool';
7 import Wrk from
'./Wrk';
9 export default class WorkerFactory
{
10 public static getWorkerImpl(workerScript
: string, workerProcessType
: WorkerProcessType
, options
?: WorkerOptions
): Wrk
{
11 if (Utils
.isUndefined(options
)) {
12 options
= {} as WorkerOptions
;
14 switch (workerProcessType
) {
15 case WorkerProcessType
.WORKER_SET
:
16 if (Utils
.isUndefined(options
.elementsPerWorker
)) {
17 options
.elementsPerWorker
= 1;
19 return new WorkerSet(workerScript
, options
.elementsPerWorker
);
20 case WorkerProcessType
.STATIC_POOL
:
21 if (Utils
.isUndefined(options
.poolMaxSize
)) {
22 options
.elementsPerWorker
= 16;
24 return new WorkerStaticPool(workerScript
, options
.poolMaxSize
);
25 case WorkerProcessType
.DYNAMIC_POOL
:
26 if (Utils
.isUndefined(options
.poolMinSize
)) {
27 options
.elementsPerWorker
= 4;
29 if (Utils
.isUndefined(options
.poolMaxSize
)) {
30 options
.elementsPerWorker
= 16;
32 return new WorkerDynamicPool(workerScript
, options
.poolMinSize
, options
.poolMaxSize
);