Node.js: socket.js improvements.
Fixed handling of the "options" parameter in Socket() constructor;
Now the connect() method returns "this";
Deduplicated the address() method;
Added missing "callback" argument to the end() method;
Now the destroy() method returns "this";
Added "timeout" argument type check in the setTimeout() method.
@@ -12,15 +12,16 @@ const unit_lib = require('unit-http/build/Release/unit-http.node');
function Socket(options) {
EventEmitter.call(this);
- if (typeof options === 'number') {
- options = { fd: options };
+ options = options || {};
- } else if (options === undefined) {
- options = {};
+ if (typeof options !== 'object') {
+ throw new TypeError('Options must be object');
}
- this.readable = options.readable !== false;
- this.writable = options.writable !== false;
+ this.readable = (typeof options.readable === 'boolean' ? options.readable
+ : false);
+ this.writable = (typeof options.writable === 'boolean' ? options.writable
+ : false);
}
util.inherits(Socket, EventEmitter);
@@ -38,25 +39,24 @@ Socket.prototype.remotePort = 0;
Socket.prototype.address = function address() {
};
-Socket.prototype.connect = function connect(options, callback) {
- if (callback !== null) {
- this.once('connect', cb);
- }
+Socket.prototype.connect = function connect(options, connectListener) {
+ this.once('connect', connectListener);
this.connecting = true;
this.writable = true;
-};
-Socket.prototype.address = function address() {
+ return this;
};
Socket.prototype.destroy = function destroy(exception) {
this.connecting = false;
this.readable = false;
this.writable = false;
+
+ return this;
};
-Socket.prototype.end = function end(data, encoding) {
+Socket.prototype.end = function end(data, encoding, callback) {
};
Socket.prototype.pause = function pause() {
@@ -77,12 +77,14 @@ Socket.prototype.setKeepAlive = function setKeepAlive(enable, initialDelay) {
Socket.prototype.setNoDelay = function setNoDelay(noDelay) {
};
-Socket.prototype.setTimeout = function setTimeout(msecs, callback) {
- this.timeout = msecs;
+Socket.prototype.setTimeout = function setTimeout(timeout, callback) {
+ if (typeof timeout !== 'number') {
+ throw new TypeError('Timeout must be number');
+ }
+
+ this.timeout = timeout;
- if (callback) {
this.on('timeout', callback);
- }
return this;
};
