%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); common.skipIfInspectorDisabled(); const { Worker, isMainThread, parentPort, workerData } = require('worker_threads'); if (isMainThread || workerData !== 'launched by test') { common.skipIfWorker(); } const { Session } = require('inspector'); const MAX_DEPTH = 3; let rootWorker = null; const runTest = common.mustCall(function() { let reportedWorkersCount = 0; const session = new Session(); session.connect(); session.on('NodeWorker.attachedToWorker', common.mustCall( ({ params: { workerInfo } }) => { console.log(`Worker ${workerInfo.title} was reported`); if (++reportedWorkersCount === MAX_DEPTH) { rootWorker.postMessage({ done: true }); } }, MAX_DEPTH)); session.post('NodeWorker.enable', { waitForDebuggerOnStart: false }); }); function processMessage({ child }) { console.log(`Worker ${child} is running`); if (child === MAX_DEPTH) { runTest(); } } function workerCallback(message) { parentPort.postMessage(message); } function startWorker(depth, messageCallback) { const worker = new Worker(__filename, { workerData: 'launched by test' }); worker.on('message', messageCallback); worker.postMessage({ depth }); return worker; } function runMainThread() { rootWorker = startWorker(1, processMessage); } function runChildWorkerThread() { let worker = null; parentPort.on('message', ({ child, depth, done }) => { if (done) { if (worker) { worker.postMessage({ done: true }); } parentPort.close(); } else if (depth) { parentPort.postMessage({ child: depth }); if (depth < MAX_DEPTH) { worker = startWorker(depth + 1, workerCallback); } } else if (child) { parentPort.postMessage({ child }); } }); } if (isMainThread) { runMainThread(); } else { runChildWorkerThread(); }