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

io.scalecube.cluster.metadata.MetadataStore Maven / Gradle / Ivy

package io.scalecube.cluster.metadata;

import io.scalecube.cluster.Member;
import java.nio.ByteBuffer;
import java.util.Optional;
import reactor.core.publisher.Mono;

/**
 * Cluster component for hosting members metadata as well functions operating over local member
 * metadata.
 */
public interface MetadataStore {

  /** Start listening on requests on getting local member metadata to remote callers. */
  void start();

  /** Stop listening on requests and dispose resporces. */
  void stop();

  /**
   * Returns local cluster member metadata from local store.
   *
   * @return local member metadata
   */
   Optional metadata();

  /**
   * Returns cluster member metadata from local store.
   *
   * @param member cluster member
   * @return metadata of the cluster member
   */
  Optional metadata(Member member);

  /**
   * Updates local cluster member metadata.
   *
   * @param metadata local member metadata
   */
  void updateMetadata(Object metadata);

  /**
   * Updates cluster member metadata in store.
   *
   * @param member member
   * @param metadata cluster member metadata
   * @return old metadata or null
   */
  ByteBuffer updateMetadata(Member member, ByteBuffer metadata);

  /**
   * Retrives metadata from cluster member.
   *
   * @param member cluster member
   * @return mono result of getting member metadata
   */
  Mono fetchMetadata(Member member);

  /**
   * Removes cluster member metadata from store.
   *
   * @param member cluster member
   * @return old metadata or null
   */
  ByteBuffer removeMetadata(Member member);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy