Interface RSocketRequester

All Superinterfaces:
reactor.core.Disposable

public interface RSocketRequester extends reactor.core.Disposable
A thin wrapper around a sending RSocket with a fluent API accepting and returning higher level Objects for input and for output, along with methods to prepare routing and other metadata.
Since:
5.2
Author:
Rossen Stoyanchev, Brian Clozel
  • Method Details

    • rsocketClient

      io.rsocket.core.RSocketClient rsocketClient()
      Return the underlying RSocketClient used to make requests with.
      Since:
      5.3
    • rsocket

      @Nullable io.rsocket.RSocket rsocket()
      Return the underlying RSocket if the requester was created with a "live" RSocket via wrap(RSocket, MimeType, MimeType, RSocketStrategies) or via one of the (deprecated) connect methods on the RSocketRequester builder, or otherwise return null.
    • dataMimeType

      MimeType dataMimeType()
      Return the data MimeType selected for the underlying RSocket at connection time. On the client side this is configured via RSocketRequester.Builder.dataMimeType(MimeType) while on the server side it's obtained from the ConnectionSetupPayload.
    • metadataMimeType

      MimeType metadataMimeType()
      Return the metadata MimeType selected for the underlying RSocket at connection time. On the client side this is configured via RSocketRequester.Builder.metadataMimeType(MimeType) while on the server side it's obtained from the ConnectionSetupPayload.
    • strategies

      RSocketStrategies strategies()
      Return the configured RSocketStrategies.
    • route

      RSocketRequester.RequestSpec route(String route, Object... routeVars)
      Begin to specify a new request with the given route to a remote handler.

      The route can be a template with placeholders, for example, "flight.{code}" in which case the supplied route variables are formatted via toString() and expanded into the template. If a formatted variable contains a "." it is replaced with the escape sequence "%2E" to avoid treating it as separator by the responder.

      If the connection is set to use composite metadata, the route is encoded as "message/x.rsocket.routing.v0". Otherwise, the route is encoded according to the mime type for the connection.

      Parameters:
      route - the route expressing a remote handler mapping
      routeVars - variables to be expanded into the route template
      Returns:
      a spec for further defining and executing the request
    • metadata

      RSocketRequester.RequestSpec metadata(Object metadata, @Nullable MimeType mimeType)
      Begin to specify a new request with the given metadata value, which can be a concrete value or any producer of a single value that can be adapted to a Publisher via ReactiveAdapterRegistry.
      Parameters:
      metadata - the metadata value to encode
      mimeType - the mime type that describes the metadata; This is required for connection using composite metadata. Otherwise, the value is encoded according to the mime type for the connection and this argument may be left as null.
    • dispose

      default void dispose()
      Shortcut method that delegates to the same on the underlying rsocketClient() in order to close the connection from the underlying transport and notify subscribers.
      Specified by:
      dispose in interface reactor.core.Disposable
      Since:
      5.3.7
    • isDisposed

      default boolean isDisposed()
      Shortcut method that delegates to the same on the underlying rsocketClient().
      Specified by:
      isDisposed in interface reactor.core.Disposable
      Since:
      5.3.7
    • builder

      static RSocketRequester.Builder builder()
      Obtain a builder to create a client RSocketRequester by connecting to an RSocket server.
    • wrap

      static RSocketRequester wrap(io.rsocket.RSocket rsocket, MimeType dataMimeType, MimeType metadataMimeType, RSocketStrategies strategies)
      Wrap an existing RSocket. Typically for internal framework use, to wrap the remote RSocket in a client or server responder, but it can also be used to wrap any RSocket.