X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FReplicatedLogImplEntry.java;h=80193590dbfab16c6572a259a7b46f13cf894703;hp=ceb5633d4d2deaedb8029a4eb9e7ee3864f68035;hb=fa96da71c5ab10973a9f93c2e8b35494b96fd7ed;hpb=915a86bcff78e373ae9487e19f5e24828ccc1e9b diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java index ceb5633d4d..80193590db 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java @@ -8,41 +8,110 @@ package org.opendaylight.controller.cluster.raft; -import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; - +import com.google.common.base.Preconditions; import java.io.Serializable; +import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; -public class ReplicatedLogImplEntry implements ReplicatedLogEntry, - Serializable { - private static final long serialVersionUID = 1L; +/** + * A {@link ReplicatedLogEntry} implementation. + */ +public class ReplicatedLogImplEntry implements ReplicatedLogEntry, Serializable { + private static final long serialVersionUID = -9085798014576489130L; private final long index; private final long term; private final Payload payload; + private transient boolean persistencePending = false; - public ReplicatedLogImplEntry(long index, long term, Payload payload) { - + /** + * Constructs an instance. + * + * @param index the index + * @param term the term + * @param payload the payload + */ + public ReplicatedLogImplEntry(final long index, final long term, final Payload payload) { this.index = index; this.term = term; - this.payload = payload; + this.payload = Preconditions.checkNotNull(payload); } - @Override public Payload getData() { + @Override + public Payload getData() { return payload; } - @Override public long getTerm() { + @Override + public long getTerm() { return term; } - @Override public long getIndex() { + @Override + public long getIndex() { return index; } - @Override public String toString() { - return "Entry{" + - "index=" + index + - ", term=" + term + - '}'; + @Override + public int size() { + return getData().size(); + } + + @Override + public boolean isPersistencePending() { + return persistencePending; + } + + @Override + public void setPersistencePending(boolean pending) { + persistencePending = pending; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + payload.hashCode(); + result = prime * result + (int) (index ^ index >>> 32); + result = prime * result + (int) (term ^ term >>> 32); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj == null) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + ReplicatedLogImplEntry other = (ReplicatedLogImplEntry) obj; + if (payload == null) { + if (other.payload != null) { + return false; + } + } else if (!payload.equals(other.payload)) { + return false; + } + + if (index != other.index) { + return false; + } + + if (term != other.term) { + return false; + } + + return true; + } + + @Override + public String toString() { + return "Entry{index=" + index + ", term=" + term + '}'; } }