Class Backend

java.lang.Object
com.vaadin.collaborationengine.Backend
Direct Known Subclasses:
LocalBackend

public abstract class Backend extends Object
The interface between a cluster backend and Collaboration Engine.
Author:
Vaadin Ltd
  • Constructor Details

    • Backend

      public Backend()
  • Method Details

    • getCollaborationEngine

      public final CollaborationEngine getCollaborationEngine()
      Gets the CollaborationEngine used by this backend.
      Returns:
      the CollaborationEngine instance, or null if not set
    • setCollaborationEngine

      public final void setCollaborationEngine(CollaborationEngine collaborationEngine)
      Sets the CollaborationEngine instance for this backend.
      Parameters:
      collaborationEngine - the CollaborationEngine instance, not null
    • openEventLog

      public abstract Backend.EventLog openEventLog(String logId)
      Opens an event log with the given id. The returned object can be used to capture any common state related to this particular event log. An actual underlying connection is not needed until Backend.EventLog.subscribe(UUID, BiConsumer)} is invoked, but it is still recommended to make this method fail fast in case it would not be possible to open an actual underlying connection later.
      Parameters:
      logId - the id of the event log to open, not null
      Returns:
      an object representing the event log, not null
    • addMembershipListener

      public abstract Registration addMembershipListener(MembershipListener membershipListener)
      Adds a listener of membership events. The listener will be notified of events dispatched when a node joins or leaves the backend.
      Parameters:
      membershipListener - the listener, not null
      Returns:
      a registration that can be used to remove the listener, not null
    • getNodeId

      public abstract UUID getNodeId()
      Gets the unique identifier of this backend node.
      Returns:
      the node id, not null
    • loadLatestSnapshot

      public abstract CompletableFuture<Backend.Snapshot> loadLatestSnapshot(String name)
      Loads the latest snapshot of data identified by the given name. To submit a snapshot see replaceSnapshot(String, UUID, UUID, String).
      Parameters:
      name - the name identifying the data, not null
      Returns:
      a completable future resolved with the UUID and snapshot, not null
    • replaceSnapshot

      public abstract CompletableFuture<Void> replaceSnapshot(String name, UUID expectedId, UUID newId, String payload)
      Submits a snapshot payload of data identified by the given name. The latest submitted snapshot for that name can be loaded with loadLatestSnapshot(String).
      Parameters:
      name - the name identifying the date, not null
      expectedId - the unique ID of the expected current snapshot
      newId - the unique ID that the new snapshot will be stored with, not null
      payload - the snapshot payload, not null
      Returns:
      a completable future that will be resolved when the operation completes, not null