Skip to content

Commit 0ecdcee

Browse files
committed
worker options are implemented
1 parent 97a2e60 commit 0ecdcee

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

src/Pool.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ function Pool(script, options) {
2727
this.forkOpts = options.forkOpts || {};
2828
this.debugPortStart = (options.debugPortStart || 43210);
2929
this.nodeWorker = options.nodeWorker;
30-
this.workerType = options.workerType || options.nodeWorker || 'auto'
30+
this.workerOpts = {
31+
stdout: options.stdout,
32+
stderr: options.stderr,
33+
};
34+
this.workerType = options.workerType || options.nodeWorker || 'auto';
3135
this.maxQueueSize = options.maxQueueSize || Infinity;
3236

3337
// configuration
@@ -355,6 +359,7 @@ Pool.prototype._createWorkerHandler = function () {
355359
forkArgs: this.forkArgs,
356360
forkOpts: this.forkOpts,
357361
debugPort: DEBUG_PORT_ALLOCATOR.nextAvailableStartingAt(this.debugPortStart),
362+
workerOpts: this.workerOpts,
358363
workerType: this.workerType
359364
});
360365
}

src/WorkerHandler.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function setupWorker(script, options) {
6161
return setupBrowserWorker(script, Worker);
6262
} else if (options.workerType === 'thread') { // node.js only
6363
WorkerThreads = ensureWorkerThreads();
64-
return setupWorkerThreadWorker(script, WorkerThreads);
64+
return setupWorkerThreadWorker(script, options, WorkerThreads);
6565
} else if (options.workerType === 'process' || !options.workerType) { // node.js only
6666
return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack('child_process'));
6767
} else { // options.workerType === 'auto' or undefined
@@ -72,7 +72,7 @@ function setupWorker(script, options) {
7272
else { // environment.platform === 'node'
7373
var WorkerThreads = tryRequireWorkerThreads();
7474
if (WorkerThreads) {
75-
return setupWorkerThreadWorker(script, WorkerThreads);
75+
return setupWorkerThreadWorker(script, options, WorkerThreads);
7676
} else {
7777
return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack('child_process'));
7878
}
@@ -97,10 +97,11 @@ function setupBrowserWorker(script, Worker) {
9797
return worker;
9898
}
9999

100-
function setupWorkerThreadWorker(script, WorkerThreads) {
100+
function setupWorkerThreadWorker(script, options, WorkerThreads) {
101101
var worker = new WorkerThreads.Worker(script, {
102102
stdout: false, // automatically pipe worker.STDOUT to process.STDOUT
103-
stderr: false // automatically pipe worker.STDERR to process.STDERR
103+
stderr: false, // automatically pipe worker.STDERR to process.STDERR
104+
...options.workerOpts,
104105
});
105106
worker.isWorkerThread = true;
106107
// make the worker mimic a child_process

src/types.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* @property {number} [maxWorkers]
55
* @property {number} [maxQueueSize]
66
* @property {'auto' | 'web' | 'process' | 'thread'} [workerType]
7+
* @property {boolean} [stdout]
8+
* @property {boolean} [stderr]
79
* @property {*} [forkArgs]
810
* @property {*} [forkOpts]
911
* @property {number} [debugPortStart]

test/WorkerHandler.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ describe('WorkerHandler', function () {
395395
describe('setupWorkerThreadWorker', function() {
396396
it('works', function() {
397397
var SCRIPT = 'the script';
398+
const OPTIONS = {};
398399
var postMessage;
399400
var addEventListener;
400401
var terminate = 0;
@@ -417,7 +418,7 @@ describe('WorkerHandler', function () {
417418
terminate++;
418419
}
419420

420-
var worker = WorkerHandler._setupWorkerThreadWorker(SCRIPT, { Worker: Worker });
421+
var worker = WorkerHandler._setupWorkerThreadWorker(SCRIPT, OPTIONS, { Worker: Worker });
421422

422423
assert.ok(worker instanceof Worker);
423424

0 commit comments

Comments
 (0)