X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fmessages%2FAppendEntriesReply.java;h=521a4512c7e49beef57ca56d2ac9f41e0d10a914;hb=a93bcbe711f66ef6ec7bc97972f108859c87a11e;hp=d811464cba9ba3f6427f3bda972c3fc888190cbb;hpb=789431e2c0c76d9d00bdc7599a08036e3720f170;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java index d811464cba..521a4512c7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java @@ -11,19 +11,47 @@ package org.opendaylight.controller.cluster.raft.messages; /** * Reply for the AppendEntriesRpc message */ -public class AppendEntriesReply { - // currentTerm, for leader to update itself - private final long term; +public class AppendEntriesReply extends AbstractRaftRPC { + private static final long serialVersionUID = -7487547356392536683L; // true if follower contained entry matching // prevLogIndex and prevLogTerm private final boolean success; - public AppendEntriesReply(long term, boolean success) { - this.term = term; + // The index of the last entry in the followers log + // This will be used to set the matchIndex for the follower on the + // Leader + private final long logLastIndex; + + private final long logLastTerm; + + // The followerId - this will be used to figure out which follower is + // responding + private final String followerId; + + private final short payloadVersion; + + private final boolean forceInstallSnapshot; + + public AppendEntriesReply(String followerId, long term, boolean success, long logLastIndex, long logLastTerm, + short payloadVersion) { + this(followerId, term, success, logLastIndex, logLastTerm, payloadVersion, false); + } + + public AppendEntriesReply(String followerId, long term, boolean success, long logLastIndex, long logLastTerm, + short payloadVersion, boolean forceInstallSnapshot) { + super(term); + + this.followerId = followerId; this.success = success; + this.logLastIndex = logLastIndex; + this.logLastTerm = logLastTerm; + this.payloadVersion = payloadVersion; + this.forceInstallSnapshot = forceInstallSnapshot; } + + @Override public long getTerm() { return term; } @@ -31,4 +59,34 @@ public class AppendEntriesReply { public boolean isSuccess() { return success; } + + public long getLogLastIndex() { + return logLastIndex; + } + + public long getLogLastTerm() { + return logLastTerm; + } + + public String getFollowerId() { + return followerId; + } + + public short getPayloadVersion() { + return payloadVersion; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("AppendEntriesReply [success=").append(success).append(", logLastIndex=").append(logLastIndex) + .append(", logLastTerm=").append(logLastTerm).append(", followerId=").append(followerId) + .append(", payloadVersion=").append(", forceInstallSnapshot=").append(forceInstallSnapshot) + .append(payloadVersion).append("]"); + return builder.toString(); + } + + public boolean isForceInstallSnapshot() { + return forceInstallSnapshot; + } }