package org.opendaylight.controller.cluster.raft.messages;
+import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry;
+
import java.util.List;
/**
* Invoked by leader to replicate log entries (§5.3); also used as
* heartbeat (§5.2).
*/
-public class AppendEntries {
- // Leaders term
- private final long term;
-
+public class AppendEntries extends AbstractRaftRPC {
// So that follower can redirect clients
private final String leaderId;
// log entries to store (empty for heartbeat;
// may send more than one for efficiency)
- private final List<Object> entries;
+ private final List<ReplicatedLogEntry> entries;
+
+ // leader's commitIndex
+ private final long leaderCommit;
public AppendEntries(long term, String leaderId, long prevLogIndex,
- long prevLogTerm, List<Object> entries) {
- this.term = term;
+ long prevLogTerm, List<ReplicatedLogEntry> entries, long leaderCommit) {
+ super(term);
this.leaderId = leaderId;
this.prevLogIndex = prevLogIndex;
this.prevLogTerm = prevLogTerm;
this.entries = entries;
- }
-
- public long getTerm() {
- return term;
+ this.leaderCommit = leaderCommit;
}
public String getLeaderId() {
return prevLogTerm;
}
- public List<Object> getEntries() {
+ public List<ReplicatedLogEntry> getEntries() {
return entries;
}
+
+ public long getLeaderCommit() {
+ return leaderCommit;
+ }
+
+ @Override public String toString() {
+ return "AppendEntries{" +
+ "leaderId='" + leaderId + '\'' +
+ ", prevLogIndex=" + prevLogIndex +
+ ", prevLogTerm=" + prevLogTerm +
+ ", entries=" + entries +
+ ", leaderCommit=" + leaderCommit +
+ '}';
+ }
}