Soft deprecation of 'listening' event.
authorRyan Dahl <ry@tinyclouds.org>
Tue, 15 Jun 2010 19:38:22 +0000 (12:38 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Tue, 15 Jun 2010 19:38:25 +0000 (12:38 -0700)
Add callback param to listen() instead

17 files changed:
doc/api.markdown
lib/net.js
test/pummel/test-keep-alive.js
test/pummel/test-tcp-many-clients.js
test/pummel/test-tcp-timeout.js
test/simple/test-http-304.js
test/simple/test-http-cat.js
test/simple/test-http-full-response.js
test/simple/test-http-head-request.js
test/simple/test-http-proxy.js
test/simple/test-http-set-timeout.js
test/simple/test-http-upgrade.js
test/simple/test-http-upgrade2.js
test/simple/test-http-write-empty-string.js
test/simple/test-net-pingpong.js
test/simple/test-repl.js
test/simple/test-tcp-reconnect.js

index 97a49d3..952c404 100644 (file)
@@ -1665,25 +1665,24 @@ sent to the server on that socket.
 If a client connection emits an 'error' event - it will forwarded here.
 
 
-### server.listen(port, hostname)
+### server.listen(port, hostname=null, callback=null)
 
 Begin accepting connections on the specified port and hostname.  If the
 hostname is omitted, the server will accept connections directed to any
-address.
+IPv4 address (`INADDR_ANY`).
 
 To listen to a unix socket, supply a filename instead of port and hostname.
 
-**If you give a port number as a string, the system will interpret it as a filename in the current directory and create a unix socket.**
+This function is asynchronous. The last parameter `callback` will be called
+when the server has been bound to the port.
 
-This function is asynchronous. `listening` will be emitted when the server
-is ready to accept connections.
 
-
-### server.listen(path)
+### server.listen(path, callback=null)
 
 Start a UNIX socket server listening for connections on the given `path`.
-This function is asynchronous. `listening` will be emitted when the server
-is ready to accept connections.
+
+This function is asynchronous. The last parameter `callback` will be called
+when the server has been bound.
 
 
 ### server.setSecure(credentials)
@@ -2077,13 +2076,6 @@ changed to
 
 This is an EventEmitter with the following events:
 
-### Event: 'listening'
-
-`function () {}`
-
-After `listen()` is called, this event will notify that the server is ready
-to accept connections.
-
 ### Event: 'connection'
 
 `function (stream) {}`
@@ -2104,15 +2096,23 @@ Creates a new TCP server. The `connection_listener` argument is
 automatically set as a listener for the `'connection'` event.
 
 
-### server.listen(port, host=null)
+### server.listen(port, host=null, callback=null)
 
-Tells the server to listen for TCP connections to `port` and `host`.
+Begin accepting connections on the specified `port` and `host`.  If the
+`host` is omitted, the server will accept connections directed to any
+IPv4 address (`INADDR_ANY`).
+
+This function is asynchronous. The last parameter `callback` will be called
+when the server has been bound.
+
+
+### server.listen(path, callback=null)
+
+Start a UNIX socket server listening for connections on the given `path`.
 
-`host` is optional. If `host` is not specified the server will accept client
-connections on any network address.
+This function is asynchronous. The last parameter `callback` will be called
+when the server has been bound.
 
-This function is asynchronous. The server will emit `'listening'` when it is
-safe to connect to it.
 
 
 ### server.close()
index 5a480a3..24e1f7a 100644 (file)
@@ -1112,6 +1112,11 @@ Server.prototype.listen = function () {
   var self = this;
   if (self.fd) throw new Error('Server already opened');
 
+  var lastArg = arguments[arguments.length - 1];
+  if (typeof lastArg == 'function') {
+    self.addListener('listening', lastArg);
+  }
+
   if (!isPort(arguments[0])) {
     // the first argument specifies a path
     self.fd = socket('unix');
index 18894a8..235843a 100644 (file)
@@ -12,7 +12,6 @@ server = http.createServer(function (req, res) {
   res.write(body);
   res.end();
 });
-server.listen(PORT);
 
 var keepAliveReqSec = 0;
 var normalReqSec = 0;
@@ -42,7 +41,7 @@ function runAb(opts, callback) {
   });
 }
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   runAb("-k -c 100 -t 2", function (reqSec, keepAliveRequests) {
     keepAliveReqSec = reqSec;
     assert.equal(true, keepAliveRequests > 0);
index 9ba72a7..9cff30b 100644 (file)
@@ -21,7 +21,6 @@ var server = net.createServer(function (c) {
     c.end();
   });
 });
-server.listen(PORT);
 
 function runClient (callback) {
   var client = net.createConnection(PORT);
@@ -67,7 +66,7 @@ function runClient (callback) {
   });
 }
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   var finished_clients = 0;
   for (var i = 0; i < concurrency; i++) {
     runClient(function () {
index d7626db..6e4600d 100644 (file)
@@ -29,8 +29,9 @@ var echo_server = net.createServer(function (socket) {
   });
 });
 
-echo_server.listen(PORT);
-puts("server listening at " + PORT);
+echo_server.listen(PORT, function () {
+  puts("server listening at " + PORT);
+});
 
 var client = net.createConnection(PORT);
 client.setEncoding("UTF8");
index 8ffa07d..e71befc 100644 (file)
@@ -8,17 +8,14 @@ s = http.createServer(function (request, response) {
   response.writeHead(304);
   response.end();
 });
-s.listen(PORT);
-sys.puts('Server running at http://127.0.0.1:'+PORT+'/')
-
-s.addListener('listening', function () {
 
+s.listen(PORT, function () {
   childProcess.exec('curl -i http://127.0.0.1:'+PORT+'/', function (err, stdout, stderr) {
     if (err) throw err;
     s.close();
     error('curled response correctly');
     error(sys.inspect(stdout));
   });
-
 });
 
+sys.puts('Server running at http://127.0.0.1:'+PORT+'/')
index 179298e..69787eb 100644 (file)
@@ -10,12 +10,11 @@ var server = http.createServer(function (req, res) {
   ]);
   res.end(body);
 });
-server.listen(PORT);
 
 var got_good_server_content = false;
 var bad_server_got_error = false;
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   http.cat("http://localhost:"+PORT+"/", "utf8", function (err, content) {
     if (err) {
       throw err;
index 06bfab6..6898805 100644 (file)
@@ -15,7 +15,6 @@ server = http.createServer(function (req, res) {
   });
   res.end(body);
 });
-server.listen(PORT);
 
 runs = 0;
 
@@ -46,7 +45,7 @@ function runAb(opts, callback) {
   });
 }
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   runAb("-c 1 -n 10", function () {
     puts("-c 1 -n 10 okay");
 
index 207a028..f1f92a9 100644 (file)
@@ -13,11 +13,10 @@ server = http.createServer(function (req, res) {
   res.end();
   server.close();
 });
-server.listen(PORT);
 
 var gotEnd = false;
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   var client = http.createClient(PORT);
   var request = client.request("HEAD", "/");
   request.addListener('response', function (response) {
index ffaec76..00ee3af 100644 (file)
@@ -11,8 +11,6 @@ var backend = http.createServer(function (req, res) {
   res.write("hello world\n");
   res.end();
 });
-debug("listen backend")
-backend.listen(BACKEND_PORT);
 
 var proxy_client = http.createClient(BACKEND_PORT);
 var proxy = http.createServer(function (req, res) {
@@ -30,8 +28,6 @@ var proxy = http.createServer(function (req, res) {
   });
   proxy_req.end();
 });
-debug("listen proxy")
-proxy.listen(PROXY_PORT);
 
 var body = "";
 
@@ -57,8 +53,11 @@ function startReq () {
   req.end();
 }
 
-proxy.addListener('listening', startReq);
-backend.addListener('listening', startReq);
+debug("listen proxy")
+proxy.listen(PROXY_PORT, startReq);
+
+debug("listen backend")
+backend.listen(BACKEND_PORT, startReq);
 
 process.addListener("exit", function () {
   assert.equal(body, "hello world\n");
index 2725688..fdf5918 100644 (file)
@@ -11,10 +11,8 @@ server = http.createServer(function (req, res) {
     server.close();
   });
 });
-server.listen(PORT);
 
-
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   sys.puts('Server running at http://127.0.0.1:'+PORT+'/');
 
   errorTimer =setTimeout(function () {
index e89c445..8afe331 100644 (file)
@@ -143,13 +143,12 @@ function test_standard_http(){
 
 
 var server = createTestServer();
-server.addListener("listening", function(){
+
+server.listen(PORT, function(){
   // All tests get chained after this:
   test_upgrade_with_listener(server);
 });
 
-server.listen(PORT);
-
 
 /*-----------------------------------------------
   Fin.
index a6ea608..f34683d 100644 (file)
@@ -25,10 +25,7 @@ process.addListener('uncaughtException', function (e) {
 });
 
 
-server.listen(PORT);
-
-
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   var c = net.createConnection(PORT);
 
   c.addListener('connect', function () {
index a3498fb..2ccce59 100644 (file)
@@ -16,7 +16,6 @@ server = http.createServer(function (request, response) {
 
   this.close();
 })
-server.listen(PORT);
 
 var response="";
 
@@ -25,7 +24,7 @@ process.addListener('exit', function () {
 });
 
 
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   var client = http.createClient(PORT);
   var req = client.request("/");
   req.end();
index cf977dc..d715e2c 100644 (file)
@@ -45,7 +45,8 @@ function pingPongTest (port, host) {
     });
   });
 
-  server.addListener("listening", function () {
+
+  server.listen(port, host, function () {
     puts("server listening on " + port + " " + host);
 
     var client = net.createConnection(port, host);
@@ -92,8 +93,6 @@ function pingPongTest (port, host) {
       throw e;
     });
   });
-
-  server.listen(port, host);
 }
 
 /* All are run at once, so run on different ports */
index 0d951ba..b5857a1 100644 (file)
@@ -42,7 +42,7 @@ function tcp_test() {
     repl.start(prompt_tcp, socket);
   });
 
-  server_tcp.addListener('listening', function () {
+  server_tcp.listen(PORT, function () {
     var read_buffer = "";
 
     client_tcp = net.createConnection(PORT);
@@ -88,7 +88,6 @@ function tcp_test() {
     });
   });
 
-  server_tcp.listen(PORT);
 }
 
 function unix_test() {
index 143c4ac..9b297a7 100644 (file)
@@ -21,9 +21,7 @@ var server = net.createServer(function (socket) {
   });
 });
 
-server.listen(PORT);
-
-server.addListener('listening', function () {
+server.listen(PORT, function () {
   puts('listening');
   var client = net.createConnection(PORT);