package org.opendaylight.controller.cluster.raft;
-import akka.japi.Procedure;
-import org.opendaylight.controller.cluster.DataPersistenceProvider;
-import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
+import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot;
public interface SnapshotState {
/**
- * Should return true when a snapshot is being captured
- * @return
+ * @return true when a snapshot is being captured
*/
boolean isCapturing();
boolean captureToInstall(ReplicatedLogEntry lastLogEntry, long replicatedToAllIndex, String targetFollower);
/**
- * Create the snapshot
+ * Applies a snapshot on a follower that was installed by the leader.
*
- * @param callback a procedure to be called which should create the snapshot
+ * @param snapshot the Snapshot to apply.
*/
- void create(Procedure<Void> callback);
+ void apply(ApplySnapshot snapshot);
/**
* Persist the snapshot
*
- * @param persistenceProvider
* @param snapshotBytes
* @param currentBehavior
* @param totalMemory
*/
- void persist(DataPersistenceProvider persistenceProvider, byte[] snapshotBytes, RaftActorBehavior currentBehavior
- ,long totalMemory);
+ void persist(byte[] snapshotBytes, long totalMemory);
/**
* Commit the snapshot by trimming the log
*
- * @param persistenceProvider
* @param sequenceNumber
*/
- void commit(DataPersistenceProvider persistenceProvider, long sequenceNumber);
+ void commit(long sequenceNumber);
/**
* Rollback the snapshot
* @param desiredTrimIndex
* @return the actual trim index
*/
- long trimLog(long desiredTrimIndex, RaftActorBehavior currentBehavior);
+ long trimLog(long desiredTrimIndex);
}