http: add comment about `outputSize` in res/server
authorFedor Indutny <fedor@indutny.com>
Mon, 5 Oct 2015 17:30:30 +0000 (13:30 -0400)
committerRod Vagg <rod@vagg.org>
Mon, 5 Oct 2015 19:56:10 +0000 (06:56 +1100)
PR-URL: https://github.com/nodejs/node/pull/3128

lib/_http_outgoing.js
lib/_http_server.js

index 4c87a36..7bf8d56 100644 (file)
@@ -46,9 +46,16 @@ utcDate._onTimeout = function() {
 function OutgoingMessage() {
   Stream.call(this);
 
+  // Queue that holds all currently pending data, until the response will be
+  // assigned to the socket (until it will its turn in the HTTP pipeline).
   this.output = [];
   this.outputEncodings = [];
   this.outputCallbacks = [];
+
+  // `outputSize` is an approximate measure of how much data is queued on this
+  // response. `_onPendingData` will be invoked to update similar global
+  // per-connection counter. That counter will be used to pause/unpause the
+  // TCP socket and HTTP Parser and thus handle the backpressure.
   this.outputSize = 0;
 
   this.writable = true;
index 2d6cb53..c11d369 100644 (file)
@@ -265,6 +265,10 @@ function connectionListener(socket) {
   var outgoingData = 0;
 
   function updateOutgoingData(delta) {
+    // `outgoingData` is an approximate amount of bytes queued through all
+    // inactive responses. If more data than the high watermark is queued - we
+    // need to pause TCP socket/HTTP parser, and wait until the data will be
+    // sent to the client.
     outgoingData += delta;
     if (socket._paused && outgoingData < socket._writableState.highWaterMark)
       return socketOnDrain();