Implement behavior common to a RaftActor in all it's states
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / behaviors / Follower.java
index 4c97d933c8c5d0a2698469fa9e1d2d79a6b7a26e..1bdcc8bdb4296c2ceea270ffaa4b261740e1ed00 100644 (file)
@@ -11,16 +11,52 @@ package org.opendaylight.controller.cluster.raft.behaviors;
 import akka.actor.ActorRef;
 import org.opendaylight.controller.cluster.raft.RaftActorContext;
 import org.opendaylight.controller.cluster.raft.RaftState;
+import org.opendaylight.controller.cluster.raft.messages.AppendEntries;
+import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply;
+import org.opendaylight.controller.cluster.raft.messages.RequestVote;
+import org.opendaylight.controller.cluster.raft.messages.RequestVoteReply;
 
 /**
  * The behavior of a RaftActor in the Follower state
+ *
+ * <ul>
+ * <li> Respond to RPCs from candidates and leaders
+ * <li> If election timeout elapses without receiving AppendEntries
+ * RPC from current leader or granting vote to candidate:
+ * convert to candidate
+ * </ul>
+ *
  */
 public class Follower extends AbstractRaftActorBehavior {
     public Follower(RaftActorContext context) {
         super(context);
     }
 
-    @Override public RaftState handleMessage(ActorRef sender, Object message) {
+    @Override protected RaftState handleAppendEntries(ActorRef sender,
+        AppendEntries appendEntries, RaftState suggestedState) {
+        return suggestedState;
+    }
+
+    @Override protected RaftState handleAppendEntriesReply(ActorRef sender,
+        AppendEntriesReply appendEntriesReply, RaftState suggestedState) {
+        return suggestedState;
+    }
+
+    @Override protected RaftState handleRequestVote(ActorRef sender,
+        RequestVote requestVote, RaftState suggestedState) {
+        return suggestedState;
+    }
+
+    @Override protected RaftState handleRequestVoteReply(ActorRef sender,
+        RequestVoteReply requestVoteReply, RaftState suggestedState) {
+        return suggestedState;
+    }
+
+    @Override protected RaftState state() {
         return RaftState.Follower;
     }
+
+    @Override public RaftState handleMessage(ActorRef sender, Object message) {
+        return super.handleMessage(sender, message);
+    }
 }