BUG 2817 - Basic implementation of RemoveServer in the Raft code
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / FollowerLogInformation.java
index 73c81afd187d2791703c1428beacbc8348abda69..6618a97f21f0d1b7145abc77171a950d9bf9d1e8 100644 (file)
@@ -14,53 +14,63 @@ public interface FollowerLogInformation {
 
     /**
      * Increment the value of the nextIndex
-     * @return
+     *
+     * @return the new value of nextIndex
      */
     long incrNextIndex();
 
     /**
      * Decrement the value of the nextIndex
-     * @return
+     *
+     * @return the new value of nextIndex
      */
     long decrNextIndex();
 
     /**
+     * Sets the index of the next log entry for this follower.
      *
      * @param nextIndex
+     * @return true if the new index differed from the current index and the current index was updated, false
+     *              otherwise.
      */
-    void setNextIndex(long nextIndex);
+    boolean setNextIndex(long nextIndex);
 
     /**
      * Increment the value of the matchIndex
-     * @return
+     *
+     * @return the new value of matchIndex
      */
     long incrMatchIndex();
 
-    void setMatchIndex(long matchIndex);
+    /**
+     * Sets the index of the highest log entry for this follower.
+     *
+     * @param matchIndex
+     * @return true if the new index differed from the current index and the current index was updated, false
+     *              otherwise.
+     */
+    boolean setMatchIndex(long matchIndex);
 
     /**
-     * The identifier of the follower
-     * This could simply be the url of the remote actor
+     *
+     * @return the identifier of the follower. This could simply be the url of the remote actor.
      */
     String getId();
 
     /**
-     * for each server, index of the next log entry
-     * to send to that server (initialized to leader
-     *    last log index + 1)
+     * @return index of the next log entry to send to that server (initialized to leader last log index + 1)
      */
     long getNextIndex();
 
     /**
-     * for each server, index of highest log entry
-     * known to be replicated on server
-     *    (initialized to 0, increases monotonically)
+     * @return index of highest log entry known to be replicated on server (initialized to 0, increases monotonically)
      */
     long getMatchIndex();
 
     /**
      * Checks if the follower is active by comparing the last updated with the duration
-     * @return boolean
+     *
+     * @return true if follower is active, false otherwise
      */
     boolean isFollowerActive();
 
@@ -77,8 +87,25 @@ public interface FollowerLogInformation {
 
     /**
      * This will return the active time of follower, since it was last reset
-     * @return time in milliseconds
+     *
+     * @return time in milliseconds since the last activity from the follower
      */
     long timeSinceLastActivity();
 
+    /**
+     * This method checks if it is ok to replicate
+     *
+     * @return true if it is ok to replicate, false otherwise
+     */
+    boolean okToReplicate();
+
+    /**
+     * @return the payload data version of the follower.
+     */
+    short getPayloadVersion();
+
+    /**
+     * Sets the payload data version of the follower.
+     */
+    void setPayloadVersion(short payloadVersion);
 }