net: add net.listening boolean property over a getter

Added a listening property into net.Server.prototype indicating
if the server is listening or not for connections.

Other Server constructors that rely on net.Server should also
gain access to this property.

Also included tests for net and http subsystems.

PR-URL: https://github.com/nodejs/node/pull/4743
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
José Moreira 2016-01-18 13:36:48 +00:00 committed by Evan Lucas
parent 8221917e85
commit 5ef9989bd6
5 changed files with 50 additions and 0 deletions

View File

@ -560,6 +560,11 @@ parameter is 511 (not 512).
This function is asynchronous. The last parameter `callback` will be added as
a listener for the `'listening'` event. See also [`net.Server.listen(port)`][].
### server.listening
A Boolean indicating whether or not the server is listening for
connections.
### server.maxHeadersCount
Limits maximum incoming headers count, equal to 1000 by default. If set to 0 -

View File

@ -202,6 +202,11 @@ server.on('error', (e) => {
(Note: All sockets in Node.js set `SO_REUSEADDR` already)
### server.listening
A Boolean indicating whether or not the server is listening for
connections.
### server.maxConnections
Set this property to reject connections when the server's connection count gets

View File

@ -1389,6 +1389,14 @@ Server.prototype.listen = function() {
return self;
};
Object.defineProperty(Server.prototype, 'listening', {
get: function() {
return !!this._handle;
},
configurable: true,
enumerable: true
});
Server.prototype.address = function() {
if (this._handle && this._handle.getsockname) {
var out = {};

View File

@ -0,0 +1,16 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const http = require('http');
const server = http.createServer();
assert.strictEqual(server.listening, false);
server.listen(common.PORT, common.mustCall(() => {
assert.strictEqual(server.listening, true);
server.close(common.mustCall(() => {
assert.strictEqual(server.listening, false);
}));
}));

View File

@ -0,0 +1,16 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const net = require('net');
const server = net.createServer();
assert.strictEqual(server.listening, false);
server.listen(common.PORT, common.mustCall(() => {
assert.strictEqual(server.listening, true);
server.close(common.mustCall(() => {
assert.strictEqual(server.listening, false);
}));
}));