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

io.scalecube.services.registry.api.ServiceRegistry Maven / Gradle / Ivy

The newest version!
package io.scalecube.services.registry.api;

import io.scalecube.services.ServiceCall;
import io.scalecube.services.ServiceEndpoint;
import io.scalecube.services.ServiceInfo;
import io.scalecube.services.ServiceProvider;
import io.scalecube.services.ServiceReference;
import io.scalecube.services.api.ServiceMessage;
import io.scalecube.services.discovery.api.ServiceDiscovery;
import io.scalecube.services.methods.ServiceMethodInvoker;
import java.util.List;
import java.util.Map;
import java.util.function.UnaryOperator;
import reactor.core.scheduler.Scheduler;

/**
 * Service registry interface provides API to register/unregister services in the system and make
 * services lookup by service result.
 */
public interface ServiceRegistry {

  /**
   * Returns list of {@link ServiceEndpoint} objects that was registered locally.
   *
   * @return list of {@link ServiceEndpoint} objects
   */
  List listServiceEndpoints();

  /**
   * Returns list of {@link ServiceReference} objects that was registered locally.
   *
   * @return list of {@link ServiceReference} objects
   */
  List listServiceReferences();

  /**
   * Looking up list of {@link ServiceReference} objects.
   *
   * @param request request
   * @return list of {@link ServiceReference} objects
   */
  List lookupService(ServiceMessage request);

  /**
   * Registering {@link ServiceEndpoint} object that was received by discovery mechanism.
   *
   * @param serviceEndpoint serviceEndpoint
   * @see ServiceDiscovery#listen()
   */
  void registerService(ServiceEndpoint serviceEndpoint);

  /**
   * Registering locally defined {@link ServiceInfo} object.
   *
   * @param serviceInfo serviceInfo
   * @see ServiceProvider
   * @see ServiceProvider#provide(ServiceCall)
   */
  void registerService(ServiceInfo serviceInfo);

  /**
   * Registering locally defined {@link ServiceInfo} object.
   *
   * @param serviceInfo serviceInfo
   * @param schedulers schedulers map (nullable)
   * @param qualifierOperator qualifier operator (nullable)
   */
  void registerService(
      ServiceInfo serviceInfo,
      Map schedulers,
      UnaryOperator qualifierOperator);

  /**
   * Unregistering {@link ServiceEndpoint}.
   *
   * @param endpointId service endpoint id
   * @return {@link ServiceEndpoint} instance that was unregistered, or null
   */
  ServiceEndpoint unregisterService(String endpointId);

  /**
   * Returns locally defined {@link ServiceInfo} objects.
   *
   * @return {@link ServiceInfo} objects
   */
  List listServices();

  /**
   * Looking up {@link ServiceMethodInvoker} by request.
   *
   * @param request request
   * @return {@link ServiceMethodInvoker} instance, or null
   */
  ServiceMethodInvoker lookupInvoker(ServiceMessage request);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy