%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'); if (common.isWindows) common.skip('dgram clustering is currently not supported on windows.'); const assert = require('assert'); const cluster = require('cluster'); const dgram = require('dgram'); if (cluster.isPrimary) { cluster.fork(); } else { // When the socket attempts to bind, it requests a handle from the cluster. // Close the socket before returning the handle from the cluster. const socket = dgram.createSocket('udp4'); const _getServer = cluster._getServer; cluster._getServer = common.mustCall(function(self, options, callback) { socket.close(common.mustCall(() => { _getServer.call(this, self, options, common.mustCall((err, handle) => { assert.strictEqual(err, 0); // When the socket determines that it was already closed, it will // close the handle. Use handle.close() to terminate the test. const close = handle.close; handle.close = common.mustCall(function() { setImmediate(() => cluster.worker.disconnect()); return close.call(this); }); callback(err, handle); })); })); }); socket.bind(common.mustNotCall('Socket should not bind.')); }