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.Executor;
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"));
  }

  /**
   * Boolean function telling is native mode (such as epoll) supported.
   *
   * @return is native mode supported for service transport
   */
  boolean isNativeSupported();

  /**
   * Getting client transport.
   *
   * @param workerThreadPool service transport worker thread pool
   * @return client transport
   */
  ClientTransport getClientTransport(Executor workerThreadPool);

  /**
   * Getting server transport.
   *
   * @param workerThreadPool service transport worker thread pool
   * @return server transport
   */
  ServerTransport getServerTransport(Executor workerThreadPool);

  /**
   * Getting new service transport worker thread pool.
   *
   * @param numOfThreads number of threads for worker thread pool
   * @param workerThreadChooser worker thread chooser function
   * @return executor
   */
  Executor getWorkerThreadPool(int numOfThreads, WorkerThreadChooser workerThreadChooser);

  /**
   * Shutdowns service transport.
   *
   * @param workerThreadPool service transport worker thread pool
   * @return shutdown signal
   */
  Mono shutdown(Executor workerThreadPool);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy