All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.scalecube.services.transport.rsocket.RSocketServiceTransport Maven / Gradle / Ivy

package io.scalecube.services.transport.rsocket;

import io.scalecube.services.transport.api.ClientTransport;
import io.scalecube.services.transport.api.HeadersCodec;
import io.scalecube.services.transport.api.ServerTransport;
import io.scalecube.services.transport.api.ServiceMessageCodec;
import io.scalecube.services.transport.api.ServiceTransport;
import io.scalecube.services.transport.api.TransportResources;
import reactor.netty.resources.LoopResources;

/**
 * RSocket service transport. Entry point for getting {@link RSocketClientTransport} and {@link
 * RSocketServerTransport}.
 */
public class RSocketServiceTransport implements ServiceTransport {

  public static final RSocketServiceTransport INSTANCE = new RSocketServiceTransport();

  private static final HeadersCodec HEADERS_CODEC = HeadersCodec.getInstance("application/json");
  private static final ServiceMessageCodec MESSAGE_CODEC = new ServiceMessageCodec(HEADERS_CODEC);
  private static final LoopResources LOOP_RESOURCES = LoopResources.create("rsocket-worker");

  @Override
  public ClientTransport clientTransport(TransportResources resources) {
    return new RSocketClientTransport(
        MESSAGE_CODEC,
        ((RSocketTransportResources) resources)
            .workerPool()
            .map(DelegatedLoopResources::newClientLoopResources)
            .orElse(LOOP_RESOURCES));
  }

  @Override
  public ServerTransport serverTransport(TransportResources resources) {
    return new RSocketServerTransport(
        MESSAGE_CODEC,
        ((RSocketTransportResources) resources)
            .workerPool()
            .map(DelegatedLoopResources::newServerLoopResources)
            .orElse(LOOP_RESOURCES));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy