com.vaadin.collaborationengine.
Class Backend
- java.lang.Object
-
- com.vaadin.collaborationengine.Backend
-
Direct Known Subclasses:
public abstract class Backend extends Object
The interface between a cluster backend and Collaboration Engine.
Author:
Vaadin Ltd
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Backend.EventIdNotFoundException
This exception is thrown by the {@link EventLog::subscribe()} method if the provided
UUID
does not exist in the log.static interface
Backend.EventLog
A strictly ordered log of submitted events.
static class
Backend.Snapshot
The
Snapshot
class is used to submit and retrieve a snapshot payload using the {@link Backend::replaceSnapshot()} and {@link Backend::loadLatestSnapshot()} methods.
-
Constructor Summary
Constructors Constructor Description Backend()
-
Method Summary
All Methods Modifier and Type Method Description abstract Registration
addMembershipListener(MembershipListener membershipListener)
Adds a listener of membership events.
CollaborationEngine
getCollaborationEngine()
Gets the
CollaborationEngine
used by this backend.abstract UUID
getNodeId()
Gets the unique identifier of this backend node.
abstract CompletableFuture<Backend.Snapshot>
loadLatestSnapshot(String name)
Loads the latest snapshot of data identified by the given name.
abstract Backend.EventLog
openEventLog(String logId)
Opens an event log with the given id.
abstract CompletableFuture<Void>
replaceSnapshot(String name, UUID expectedId, UUID newId, String payload)
Submits a snapshot payload of data identified by the given name.
void
setCollaborationEngine(CollaborationEngine collaborationEngine)
Sets the
CollaborationEngine
instance for this backend.
-
-
-
Method Detail
-
getCollaborationEngine
public final CollaborationEngine getCollaborationEngine()
Gets the
CollaborationEngine
used by this backend.Returns:
the
CollaborationEngine
instance, ornull
if not set
-
setCollaborationEngine
public final void setCollaborationEngine(CollaborationEngine collaborationEngine)
Sets the
CollaborationEngine
instance for this backend.Parameters:
collaborationEngine
- theCollaborationEngine
instance, notnull
-
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, notnull
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, notnull
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, notnull
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, notnull
expectedId
- the unique ID of the expected current snapshotnewId
- the unique ID that the new snapshot will be stored with, notnull
payload
- the snapshot payload, notnull
Returns:
a completable future that will be resolved when the operation completes, not
null
-
-