Thanks for those clarifcations, Chris, I really appreciate it!

-- 
Cheers,
√

On Dec 6, 2017 13:31, "Chris Hegarty" <chris.hega...@oracle.com> wrote:

> Viktor,
>
> I would like to address your first comment only, as your question is
> directed to someone else.
>
> > On 6 Dec 2017, at 10:01, Viktor Klang <viktor.kl...@gmail.com> wrote:
> > ..
> > I think you raise some valid concerns, particularly with the byte buffer
> pools.
>
> The conversation got off to a bad start as there was a misunderstanding
> about what was actually being proposed, so I would like to clear that
> up.
>
> The reference to byte buffer pools is not relevant here. They were
> introduced as a performance optimization that allowed better reuse of
> byte buffers between the socket channel and the SSL engine, in the
> implementation. That's all, nothing more. They have no bearing on the
> API, and this JEP is not proposing to make any changes in the NIO area.
>
> What is relevant is the use of byte buffers as a Flow of request and
> response body data. The API provides no mechanism for reuse, or pooling,
> of these byte buffers ( it did in a previous revision but was removed
> because of its complexity ). The latest version of the API for
> BodySubscriber [1] contains the following: “... the ByteBuffers,
> once passed to the subscriber, are no longer used by the HTTP client.”,
> and the BodyPublisher [2] contains: “Instances of ByteBuffer published
> by the publisher must be allocated by the publisher, and must not be
> accessed after being handed over to the library.". I accept that this
> could be made more clear in the API.
>
> The API uses byte buffers as carriers of data in a way that is
> consistent with other APIs. In the case of the publisher, it is the
> responsibility of the user to allocate the buffer and pass it to the
> HTTP Client, after which it should not be modified by user code. In the
> case of the subscriber, once the byte buffer is passed to `onNext`, it
> is then the sole responsibility of the subscriber.
>
> The primary motivation for the use byte buffers, as described above, is
> to provide maximum flexibility to an implementation to avoid copying
> and buffering of data.
>
> ---
>
> Through contacts from Viktor, we have recently received some feedback on
> the use of the body subscriber and publisher in the API. This feedback
> is very helpful and we will soon send out a proposal that will better
> support integration with existing publishers and subscribers.  [ I will
> work with Viktor to bring this to the mailing list ].
>
>
> -Chris.
>
> [1] http://cr.openjdk.java.net/~chegar/httpclient/javadoc/api/
> jdk/incubator/http/HttpResponse.BodySubscriber.html
> [2] http://cr.openjdk.java.net/~chegar/httpclient/javadoc/api/
> jdk/incubator/http/HttpRequest.BodyPublisher.html
>

Reply via email to