mirror of
https://github.com/denoland/deno.git
synced 2024-12-27 17:49:08 -05:00
53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
|
// deno-fmt-ignore-file
|
||
|
// deno-lint-ignore-file
|
||
|
|
||
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||
|
// Taken from Node 18.12.1
|
||
|
// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually.
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
// Ignore on Windows.
|
||
|
if (process.platform === 'win32') {
|
||
|
process.exit(0);
|
||
|
}
|
||
|
|
||
|
const common = require('../common');
|
||
|
const assert = require('assert');
|
||
|
const cp = require('child_process');
|
||
|
const NUM_MESSAGES = 10;
|
||
|
const values = [];
|
||
|
|
||
|
for (let i = 0; i < NUM_MESSAGES; ++i) {
|
||
|
values[i] = i;
|
||
|
}
|
||
|
|
||
|
if (process.argv[2] === 'child') {
|
||
|
const received = values.map(() => { return false; });
|
||
|
|
||
|
process.on('uncaughtException', common.mustCall((err) => {
|
||
|
received[err] = true;
|
||
|
const done = received.every((element) => { return element === true; });
|
||
|
|
||
|
if (done)
|
||
|
process.disconnect();
|
||
|
}, NUM_MESSAGES));
|
||
|
|
||
|
process.on('message', (msg) => {
|
||
|
// If messages are handled synchronously, throwing should break the IPC
|
||
|
// message processing.
|
||
|
throw msg;
|
||
|
});
|
||
|
|
||
|
process.send('ready');
|
||
|
} else {
|
||
|
const child = cp.fork(__filename, ['child']);
|
||
|
|
||
|
child.on('message', common.mustCall((msg) => {
|
||
|
assert.strictEqual(msg, 'ready');
|
||
|
values.forEach((value) => {
|
||
|
child.send(value);
|
||
|
});
|
||
|
}));
|
||
|
}
|