RSocketClient refactoring #925
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
RSocketClientis not yet in production so we've an opportunity to revisit things like the packaging, Javadoc, as well as where and how the client can be created.One high level goal of this change is to draw a more clear contrast between
RSocketClientandRSocket. There is a major update to the Javadoc ofRSocketClientrelated to that as well precising the language to reflect the addition ofLoadbalanceRSocketClientas a second alternative implementation since it was first created.Secondly to emphasize them as as two distinct layers, in the proposed changes
RSocketConnectoris now left primarily for creatingMono<RSocket>, i.e. connecting to establish a live, transient connection. SeparatelyRSocketClient.from(Mono<RSocket)allows wrapping aMono<RSocket>source and uses it to establish (and re-establish) a shared connection for multiplexed use as needed.The change also moves
RSocketClientfrom the top-level package, whereRSocketis for example, to theio.rsocket.coresub-package. For onceRSocketClientis not on the same level asRSocket. It's only for sending, it works on a higher level than RSocket, etc. On a practical level this makes it possible to have static factory methods for the default implementation and for adapting a liveRSocket.