[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16622851#comment-16622851
 ] 

Ryan Schmitt commented on HTTPCLIENT-1942:
------------------------------------------

[~olegk] Apologies, I didn't realize that you were blocking on API 
finalization. I'm happy with all of the public API's I have added, and they can 
be considered final. I may make additive changes later on to implement a 
slightly higher-level API, but the core types from {{:httpcore5-reactive}} 
compose surprisingly well with the {{HttpAsyncClient}}.

Let me summarize what I've added in terms of public API surface area, just to 
review. On the client side:

# {{ReactiveResponseConsumer}}, which implements {{AsyncResponseConsumer<Void>}}
## Two constructors, one default and one which takes a 
{{FutureCallback<Message<HttpResponse, Publisher<ByteBuffer>>>}}
## Public getters: {{getInformationResponse}}, {{getEntityDetails}}, 
{{getTrailers}}, and {{getResponseFuture}}, plus implementations of all the 
interface methods (which should only be used internally)
# {{ReactiveEntityProducer}}, which implements {{AsyncEntityProducer}}
## One constructor, which takes the {{Publisher<ByteBuffer>}} as well as the 
content length, type, and encoding
## No other public methods, other than the interface methods (which, again, 
should only be used internally)

The only thing I see here might be an alternate constructor for 
{{ReactiveEntityProducer}} which accepts {{EntityDetails}} instead of separate 
primitive parameters, but that's also an additive change.

On the server side, there's:

# {{ReactiveRequestProcessor}}, a functional interface the user implements to 
handle HTTP requests
# {{ReactiveServerExchangeHandler}}, a public class implementing 
{{AsyncServerExchangeHandler}}
## One constructor, 
{{ReactiveServerExchangeHandler(ReactiveRequestProcessor)}}, which delegates to 
the customer's processor to handle requests



> Add support for Reactive Streams
> --------------------------------
>
>                 Key: HTTPCLIENT-1942
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1942
>             Project: HttpComponents HttpClient
>          Issue Type: Wish
>          Components: HttpClient (async)
>    Affects Versions: 5.0 Beta1
>            Reporter: Ryan Schmitt
>            Priority: Major
>              Labels: stuck, volunteers-wanted
>             Fix For: Future
>
>         Attachments: client to server tput.jpeg, client to server window 
> scaling (bytes out).jpeg, server to client tput.jpeg
>
>
> It would be very helpful to me if the Apache client provided an 
> implementation of the [Reactive Streams|http://www.reactive-streams.org/] 
> spec, particularly as an implementation of the standard 
> [interfaces|https://search.maven.org/artifact/org.reactivestreams/reactive-streams/1.0.2/jar].
>  These interfaces are JDK6-compatible and have no other dependencies, but 
> they unlock interoperability with many other frameworks, such as RxJava.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to