On Tue, 2012-02-28 at 13:45 +0000, Mark Thornton wrote: > On 28/02/12 12:31, Oleg Kalnichevski wrote: > > On Tue, 2012-02-28 at 10:50 +0000, Mark Thornton wrote: > >> I am trying to implement a pipelined client using 4.1.4 (Async client > >> and core 4.2 aren't yet GA). It would appear that > >> AsyncNHttpClientHandler does not permit pipelining. > > No, it does not. The expect-continue handshake support and request > > pipelining are pretty much mutually exclusive. Default protocol handlers > > shipped with HttpCore implement expect-continue handshaking as it is > > required by the HTTP/1.1 specification, while request pipelining is > > optional. > > Not quite exclusive --- the expect handshake will force a pipeline flush > but pipelining can be used when there is no expect-continue outstanding. > Obviously it requires more work and additional synchronization between > send and receive parts. Will this change in 4.2? >
I am not sure it is that simple. Sending a response to a pipelined request while the client is expecting a 100-continue _or_ a 4xx status code in case of a failed expectation would directly violate the specification in my opinion. Personally I do not see a non-ambiguous way of supporting both the expect-continue and request pipelining at the same time, but I'd be enormously happy to see someone prove me wrong by submitting such a protocol handler ;-) > > Hope this helps Oleg > > Thanks very much, it does give me confidence to proceed. I am slightly > tempted to extend the protocol to permit out of order responses. > I would advise against bastardizing the HTTP protocol. You probably should consider using WebSockets or Google SPDY if you want to support fully asynchronous message exchanges. Hope this helps Oleg > regards, > Mark Thornton > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
