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

io.scalecube.services.transport.api.ServiceTransport Maven / Gradle / Ivy

package io.scalecube.services.transport.api;

import io.scalecube.services.ServiceLoaderUtil;
import java.util.concurrent.ExecutorService;
import reactor.core.publisher.Mono;

/** Service transport interface. */
public interface ServiceTransport {

  /**
   * Loads service transport from classpath service loader mechanism.
   *
   * @return instance of service transport
   */
  static ServiceTransport getTransport() {
    return ServiceLoaderUtil.findFirst(ServiceTransport.class)
        .orElseThrow(() -> new IllegalStateException("ServiceTransport not configured"));
  }

  /**
   * Getting client transport.
   *
   * @param executorService transport executor service
   * @return client transport
   */
  ClientTransport getClientTransport(ExecutorService executorService);

  /**
   * Getting server transport.
   *
   * @param executorService transport executor service
   * @return server transport
   */
  ServerTransport getServerTransport(ExecutorService executorService);

  /**
   * Getting new service transport executor service.
   *
   * @return service transport executor service
   */
  ExecutorService getExecutorService();

  /**
   * Shutdowns service transport.
   *
   * @param executorService transport executor service
   * @return shutdown signal
   */
  Mono shutdown(ExecutorService executorService);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy