Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Simplify writeReq handling in net_uv
Browse files Browse the repository at this point in the history
  • Loading branch information
piscisaureus authored and ry committed Oct 7, 2011
1 parent 10f97f9 commit ed65b7b
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions lib/net_uv.js
Expand Up @@ -59,7 +59,7 @@ exports.connect = exports.createConnection = function(port /* [host], [cb] */) {

/* called when creating new Socket, or when re-using a closed Socket */
function initSocketHandle(self) {
self._writeRequests = [];
self._pendingWriteReqs = 0;

self._flags = 0;
self._connectQueueSize = 0;
Expand Down Expand Up @@ -237,7 +237,7 @@ Socket.prototype.destroySoon = function() {
this.writable = false;
this._flags |= FLAG_DESTROY_SOON;

if (this._writeRequests.length == 0) {
if (this._pendingWriteReqs == 0) {
this.destroy();
}
};
Expand Down Expand Up @@ -395,7 +395,7 @@ Socket.prototype.write = function(data /* [encoding], [fd], [cb] */) {

writeReq.oncomplete = afterWrite;
writeReq.cb = cb;
this._writeRequests.push(writeReq);
this._pendingWriteReqs++;

return this._handle.writeQueueSize == 0;
};
Expand All @@ -410,18 +410,17 @@ function afterWrite(status, handle, req, buffer) {
}
// TODO check status.

var req_ = self._writeRequests.shift();
assert.equal(req, req_);
self._pendingWriteReqs--;

if (self._writeRequests.length == 0) {
if (self._pendingWriteReqs == 0) {
// TODO remove all uses of ondrain - this is not a good hack.
if (self.ondrain) self.ondrain();
self.emit('drain');
}

if (req.cb) req.cb();

if (self._writeRequests.length == 0 && self._flags & FLAG_DESTROY_SOON) {
if (self._pendingWriteReqs == 0 && self._flags & FLAG_DESTROY_SOON) {
self.destroy();
}
}
Expand Down

0 comments on commit ed65b7b

Please sign in to comment.