%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'); const assert = require('assert'); const net = require('net'); const message = Buffer.from('hello world'); // Test typical usage net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; const buffers = []; const sockBuf = Buffer.alloc(8); net.connect({ port: this.address().port, onread: { buffer: sockBuf, callback: function(nread, buf) { assert.strictEqual(buf, sockBuf); received += nread; buffers.push(Buffer.from(buf.slice(0, nread))); } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(Buffer.concat(buffers), message); })); }); // Test Uint8Array support net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; let incoming = new Uint8Array(0); const sockBuf = new Uint8Array(8); net.connect({ port: this.address().port, onread: { buffer: sockBuf, callback: function(nread, buf) { assert.strictEqual(buf, sockBuf); received += nread; const newIncoming = new Uint8Array(incoming.length + nread); newIncoming.set(incoming); newIncoming.set(buf.slice(0, nread), incoming.length); incoming = newIncoming; } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(incoming, new Uint8Array(message)); })); }); // Test Buffer callback usage net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; const incoming = []; const bufPool = [ Buffer.alloc(2), Buffer.alloc(2), Buffer.alloc(2) ]; let bufPoolIdx = -1; let bufPoolUsage = 0; net.connect({ port: this.address().port, onread: { buffer: () => { ++bufPoolUsage; bufPoolIdx = (bufPoolIdx + 1) % bufPool.length; return bufPool[bufPoolIdx]; }, callback: function(nread, buf) { assert.strictEqual(buf, bufPool[bufPoolIdx]); received += nread; incoming.push(Buffer.from(buf.slice(0, nread))); } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(Buffer.concat(incoming), message); assert.strictEqual(bufPoolUsage, 7); })); }); // Test Uint8Array callback support net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; let incoming = new Uint8Array(0); const bufPool = [ new Uint8Array(2), new Uint8Array(2), new Uint8Array(2) ]; let bufPoolIdx = -1; let bufPoolUsage = 0; net.connect({ port: this.address().port, onread: { buffer: () => { ++bufPoolUsage; bufPoolIdx = (bufPoolIdx + 1) % bufPool.length; return bufPool[bufPoolIdx]; }, callback: function(nread, buf) { assert.strictEqual(buf, bufPool[bufPoolIdx]); received += nread; const newIncoming = new Uint8Array(incoming.length + nread); newIncoming.set(incoming); newIncoming.set(buf.slice(0, nread), incoming.length); incoming = newIncoming; } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(incoming, new Uint8Array(message)); assert.strictEqual(bufPoolUsage, 7); })); }); // Test explicit socket pause net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; const buffers = []; const sockBuf = Buffer.alloc(8); let paused = false; net.connect({ port: this.address().port, onread: { buffer: sockBuf, callback: function(nread, buf) { assert.strictEqual(paused, false); assert.strictEqual(buf, sockBuf); received += nread; buffers.push(Buffer.from(buf.slice(0, nread))); paused = true; this.pause(); setTimeout(() => { paused = false; this.resume(); }, 100); } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(Buffer.concat(buffers), message); })); }); // Test implicit socket pause net.createServer(common.mustCall(function(socket) { this.close(); socket.end(message); })).listen(0, function() { let received = 0; const buffers = []; const sockBuf = Buffer.alloc(8); let paused = false; net.connect({ port: this.address().port, onread: { buffer: sockBuf, callback: function(nread, buf) { assert.strictEqual(paused, false); assert.strictEqual(buf, sockBuf); received += nread; buffers.push(Buffer.from(buf.slice(0, nread))); paused = true; setTimeout(() => { paused = false; this.resume(); }, 100); return false; } } }).on('data', common.mustNotCall()).on('end', common.mustCall(() => { assert.strictEqual(received, message.length); assert.deepStrictEqual(Buffer.concat(buffers), message); })); });