0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00

fs,net: emit 'ready' for fs streams and sockets

... in addition to the event names they currently use.

Currently, various internal streams have different events that
indicate that the underlying resource has successfully been
established. This commit adds ready event for fs and net
sockets to standardize on emitting ready for all of these streams.

PR-URL: https://github.com/nodejs/node/pull/19408
Fixes: https://github.com/nodejs/node/issues/19304
Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
Sameer Srivastava 2018-03-17 16:24:46 +05:30 committed by Anna Henningsen
parent 84afd6e492
commit 1c8149417a
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9
4 changed files with 36 additions and 0 deletions

View File

@ -2051,6 +2051,7 @@ ReadStream.prototype.open = function() {
self.fd = fd;
self.emit('open', fd);
self.emit('ready');
// start the flow of data.
self.read();
});
@ -2207,6 +2208,7 @@ WriteStream.prototype.open = function() {
this.fd = fd;
this.emit('open', fd);
this.emit('ready');
});
};

View File

@ -1188,6 +1188,7 @@ function afterConnect(status, handle, req, readable, writable) {
self._unrefTimer();
self.emit('connect');
self.emit('ready');
// start the first read, or get an immediate EOF.
// this doesn't actually consume any bytes, because len=0.

View File

@ -0,0 +1,13 @@
'use strict';
const common = require('../common');
const fs = require('fs');
const path = require('path');
const tmpdir = require('../common/tmpdir');
const readStream = fs.createReadStream(__filename);
readStream.on('ready', common.mustCall(() => {}, 1));
const writeFile = path.join(tmpdir.path, 'write-fsreadyevent.txt');
tmpdir.refresh();
const writeStream = fs.createWriteStream(writeFile, { autoClose: true });
writeStream.on('ready', common.mustCall(() => {}, 1));

View File

@ -0,0 +1,20 @@
'use strict';
const common = require('../common');
// This test ensures that socket.connect can be called without callback
// which is optional.
const net = require('net');
const server = net.createServer(common.mustCall(function(conn) {
conn.end();
server.close();
})).listen(0, common.mustCall(function() {
const client = new net.Socket();
client.on('ready', common.mustCall(function() {
client.end();
}));
client.connect(server.address());
}));