W3C home > Mailing lists > Public > www-lib@w3.org > July to September 2003

Re: how pipeline works

From: Richard Atterer <richard@list03.atterer.net>
Date: Sat, 6 Sep 2003 14:30:26 +0200
To: www-lib@w3.org
Message-ID: <20030906123026.GA1008@nenya.lan>

On Fri, Sep 05, 2003 at 10:49:26AM -0700, Jerry G. Chiuan wrote:
> - By using pipeline, does client need only one TCP connection? ( all
> requests go through the same connection )

Yes!

> - If yes, how does it guatantee the sequence of consecutive responses? e.g.
> server takes longer time to deal with 1st request, but shorter time for 2nd
> request. The server would hold 2nd response until 1st response is generated
> then send them both sequentially back to client, or the server just sends
> back directly no matter which response is ready

The server will need to maintain a queue of pending requests. Any new 
requests get added to the end of the queue, and whenever a file has been 
sent out, the next request is taken from the front of the queue.

RFC 2068 (HTTP/1.1) says the following:

8.1.2.2 Pipelining

   A client that supports persistent connections MAY "pipeline" its
   requests (i.e., send multiple requests without waiting for each
   response). A server MUST send its responses to those requests in the
   same order that the requests were received.

> - for doing that, we at least need 2 threads, one is for sending requests,
> another is for receiving reponses, don't we?

That's one way to implement it - I guess it would also be enough if the
server checked for new requests at regular intervals, e.g. after every x kB
of sent data. I have no idea how Apache implements it.

Cheers,

  Richard

-- 
  __   _
  |_) /|  Richard Atterer     |  GnuPG key:
  | \/|  http://atterer.net  |  0x888354F7
   '` 
Received on Saturday, 6 September 2003 12:39:06 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 23 April 2007 18:18:43 GMT