Env is basically a map for sharing data between handlers.
Env is basically a map for sharing data between handlers. But for more typesafe, fixed data variables are put inside.
This is a wrapper.
This is a wrapper. It prepends SSL handler to the non-SSL pipeline.
Sharable handlers are put here so that they can be easily picked up by apps that want to use custom pipeline.
Sharable handlers are put here so that they can be easily picked up by apps that want to use custom pipeline. Those apps may only want a subset of default handlers.
When an app uses its own dispatcher (not Xitrum's routing/dispatcher) and only needs Xitrum's fast static file serving, it may use only these handlers:
Inbound: HttpRequestDecoder Request2Env PublicFileServer Its own dispatcher
Outbound: HttpResponseEncoder ChunkedWriteHandler XSendFile
http://en.wikipedia.org/wiki/HTTP_pipelining
http://en.wikipedia.org/wiki/HTTP_pipelining
Xitrum does not support real pipelining. A client may send multiple requests, but Xitrum will not process them at concurrently. Xitrum will process one by one.
From Mongrel2 doc: http://mongrel2.org/manual/book-finalch6.html
"Where problems come in is with pipe-lined requests, meaning a browser sends a bunch of requests in a big blast, then hangs out for all the responses. This was such a horrible stupid idea that pretty much everone gets it wrong and doesn't support it fully, if at all. The reason is it's much too easy to blast a server with a ton of request, wait a bit so they hit proxied backends, and then close the socket. The web server and the backends are now screwed having to handle these requests which will go nowhere."