mirror of https://github.com/lukechilds/node.git
Browse Source
* setRecvBufferSize(int) and setSendBufferSize(int) * added docs for send/receive buffer sizes * Added options support to set buffer sizes in dgram.createSocket(). PR-URL: https://github.com/nodejs/node/pull/13623 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>canary-base
committed by
Refael Ackermann
7 changed files with 221 additions and 0 deletions
@ -0,0 +1,74 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const dgram = require('dgram'); |
|||
|
|||
{ |
|||
// Should throw error if the socket is never bound.
|
|||
const errorObj = { |
|||
code: 'ERR_SOCKET_BUFFER_SIZE', |
|||
type: Error, |
|||
message: /^Could not get or set buffer size:.*$/ |
|||
}; |
|||
|
|||
const socket = dgram.createSocket('udp4'); |
|||
|
|||
assert.throws(() => { |
|||
socket.setRecvBufferSize(8192); |
|||
}, common.expectsError(errorObj)); |
|||
|
|||
assert.throws(() => { |
|||
socket.setSendBufferSize(8192); |
|||
}, common.expectsError(errorObj)); |
|||
|
|||
assert.throws(() => { |
|||
socket.getRecvBufferSize(); |
|||
}, common.expectsError(errorObj)); |
|||
|
|||
assert.throws(() => { |
|||
socket.getSendBufferSize(); |
|||
}, common.expectsError(errorObj)); |
|||
} |
|||
|
|||
{ |
|||
// Should throw error if invalid buffer size is specified
|
|||
const errorObj = { |
|||
code: 'ERR_SOCKET_BAD_BUFFER_SIZE', |
|||
type: TypeError, |
|||
message: /^Buffer size must be a positive integer$/ |
|||
}; |
|||
|
|||
const badBufferSizes = [-1, Infinity, 'Doh!']; |
|||
|
|||
const socket = dgram.createSocket('udp4'); |
|||
|
|||
socket.bind(common.mustCall(() => { |
|||
badBufferSizes.forEach((badBufferSize) => { |
|||
assert.throws(() => { |
|||
socket.setRecvBufferSize(badBufferSize); |
|||
}, common.expectsError(errorObj)); |
|||
|
|||
assert.throws(() => { |
|||
socket.setSendBufferSize(badBufferSize); |
|||
}, common.expectsError(errorObj)); |
|||
}); |
|||
socket.close(); |
|||
})); |
|||
} |
|||
|
|||
{ |
|||
// Can set and get buffer sizes after binding the socket.
|
|||
const socket = dgram.createSocket('udp4'); |
|||
|
|||
socket.bind(common.mustCall(() => { |
|||
socket.setRecvBufferSize(10000); |
|||
socket.setSendBufferSize(10000); |
|||
|
|||
// note: linux will double the buffer size
|
|||
const expectedBufferSize = common.isLinux ? 20000 : 10000; |
|||
assert.strictEqual(socket.getRecvBufferSize(), expectedBufferSize); |
|||
assert.strictEqual(socket.getSendBufferSize(), expectedBufferSize); |
|||
socket.close(); |
|||
})); |
|||
} |
Loading…
Reference in new issue