2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.cluster.raft.behaviors;
11 import akka.actor.ActorRef;
12 import org.opendaylight.controller.cluster.raft.RaftActorContext;
13 import org.opendaylight.controller.cluster.raft.RaftState;
14 import org.opendaylight.controller.cluster.raft.messages.AppendEntries;
15 import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply;
16 import org.opendaylight.controller.cluster.raft.messages.RequestVote;
17 import org.opendaylight.controller.cluster.raft.messages.RequestVoteReply;
20 * The behavior of a RaftActor in the Follower state
23 * <li> Respond to RPCs from candidates and leaders
24 * <li> If election timeout elapses without receiving AppendEntries
25 * RPC from current leader or granting vote to candidate:
26 * convert to candidate
30 public class Follower extends AbstractRaftActorBehavior {
31 public Follower(RaftActorContext context) {
35 @Override protected RaftState handleAppendEntries(ActorRef sender,
36 AppendEntries appendEntries, RaftState suggestedState) {
37 return suggestedState;
40 @Override protected RaftState handleAppendEntriesReply(ActorRef sender,
41 AppendEntriesReply appendEntriesReply, RaftState suggestedState) {
42 return suggestedState;
45 @Override protected RaftState handleRequestVote(ActorRef sender,
46 RequestVote requestVote, RaftState suggestedState) {
47 return suggestedState;
50 @Override protected RaftState handleRequestVoteReply(ActorRef sender,
51 RequestVoteReply requestVoteReply, RaftState suggestedState) {
52 return suggestedState;
55 @Override protected RaftState state() {
56 return RaftState.Follower;
59 @Override public RaftState handleMessage(ActorRef sender, Object message) {
60 return super.handleMessage(sender, message);