Skip to content

Commit c502384

Browse files
addaleaxcodebytere
authored andcommitted
worker: use _writev in internal communication
PR-URL: #33454 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
1 parent 8803d7e commit c502384

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

lib/internal/main/worker_thread.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,9 @@ port.on('message', (message) => {
162162
CJSLoader.Module.runMain(filename);
163163
}
164164
} else if (message.type === STDIO_PAYLOAD) {
165-
const { stream, chunk, encoding } = message;
166-
process[stream].push(chunk, encoding);
165+
const { stream, chunks } = message;
166+
for (const { chunk, encoding } of chunks)
167+
process[stream].push(chunk, encoding);
167168
} else {
168169
assert(
169170
message.type === STDIO_WANTS_MORE_DATA,

lib/internal/worker.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,11 @@ class Worker extends EventEmitter {
242242
return this[kOnErrorMessage](message.error);
243243
case messageTypes.STDIO_PAYLOAD:
244244
{
245-
const { stream, chunk, encoding } = message;
246-
return this[kParentSideStdio][stream].push(chunk, encoding);
245+
const { stream, chunks } = message;
246+
const readable = this[kParentSideStdio][stream];
247+
for (const { chunk, encoding } of chunks)
248+
readable.push(chunk, encoding);
249+
return;
247250
}
248251
case messageTypes.STDIO_WANTS_MORE_DATA:
249252
{

lib/internal/worker/io.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,11 @@ class WritableWorkerStdio extends Writable {
206206
this[kWritableCallbacks] = [];
207207
}
208208

209-
_write(chunk, encoding, cb) {
209+
_writev(chunks, cb) {
210210
this[kPort].postMessage({
211211
type: messageTypes.STDIO_PAYLOAD,
212212
stream: this[kName],
213-
chunk,
214-
encoding
213+
chunks: chunks.map(({ chunk, encoding }) => ({ chunk, encoding }))
215214
});
216215
this[kWritableCallbacks].push(cb);
217216
if (this[kPort][kWaitingStreams]++ === 0)
@@ -222,7 +221,7 @@ class WritableWorkerStdio extends Writable {
222221
this[kPort].postMessage({
223222
type: messageTypes.STDIO_PAYLOAD,
224223
stream: this[kName],
225-
chunk: null
224+
chunks: [ { chunk: null, encoding: '' } ]
226225
});
227226
cb();
228227
}

0 commit comments

Comments
 (0)