Browse Source

net: return this from setNoDelay and setKeepAlive

Modifies the Socket.setNoDelay and Socket.setKeepAlive methods to return
the socket instance instead of undefined, to allow for chaining.

PR-URL: https://github.com/nodejs/io.js/pull/1779
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
v2.3.1-release
Roman Reiss 10 years ago
parent
commit
cb381fe3e0
  1. 4
      doc/api/net.markdown
  2. 8
      lib/net.js
  3. 3
      test/parallel/test-net-persistent-keepalive.js
  4. 3
      test/parallel/test-net-persistent-nodelay.js

4
doc/api/net.markdown

@ -464,6 +464,8 @@ algorithm, they buffer data before sending it off. Setting `true` for
`noDelay` will immediately fire off data each time `socket.write()` is called.
`noDelay` defaults to `true`.
Returns `socket`.
### socket.setKeepAlive([enable][, initialDelay])
Enable/disable keep-alive functionality, and optionally set the initial
@ -475,6 +477,8 @@ data packet received and the first keepalive probe. Setting 0 for
initialDelay will leave the value unchanged from the default
(or previous) setting. Defaults to `0`.
Returns `socket`.
### socket.address()
Returns the bound address, the address family name and port of the

8
lib/net.js

@ -324,23 +324,27 @@ Socket.prototype.setNoDelay = function(enable) {
if (!this._handle) {
this.once('connect',
enable ? this.setNoDelay : this.setNoDelay.bind(this, enable));
return;
return this;
}
// backwards compatibility: assume true when `enable` is omitted
if (this._handle.setNoDelay)
this._handle.setNoDelay(enable === undefined ? true : !!enable);
return this;
};
Socket.prototype.setKeepAlive = function(setting, msecs) {
if (!this._handle) {
this.once('connect', this.setKeepAlive.bind(this, setting, msecs));
return;
return this;
}
if (this._handle.setKeepAlive)
this._handle.setKeepAlive(setting, ~~(msecs / 1000));
return this;
};

3
test/parallel/test-net-persistent-keepalive.js

@ -18,7 +18,8 @@ echoServer.on('listening', function() {
var clientConnection = new net.Socket();
// send a keepalive packet after 1000 ms
// and make sure it persists
clientConnection.setKeepAlive(true, 400);
var s = clientConnection.setKeepAlive(true, 400);
assert.ok(s instanceof net.Socket);
clientConnection.connect(common.PORT);
clientConnection.setTimeout(0);

3
test/parallel/test-net-persistent-nodelay.js

@ -24,7 +24,8 @@ echoServer.on('listening', function() {
// setNoDelay before the handle is created
// there is probably a better way to test this
sock1.setNoDelay();
var s = sock1.setNoDelay();
assert.ok(s instanceof net.Socket);
sock1.connect(common.PORT);
sock1.on('end', function() {
assert.equal(callCount, 1);

Loading…
Cancel
Save