- @Override
- public String toString() {
- final StringBuilder sb =
- new StringBuilder("AppendEntries{");
- sb.append("term=").append(getTerm());
- sb.append("leaderId='").append(leaderId).append('\'');
- sb.append(", prevLogIndex=").append(prevLogIndex);
- sb.append(", prevLogTerm=").append(prevLogTerm);
- sb.append(", entries=").append(entries);
- sb.append(", leaderCommit=").append(leaderCommit);
- sb.append('}');
- return sb.toString();
- }
-
- public <T extends Object> Object toSerializable() {
- return toSerializable(RaftVersions.CURRENT_VERSION);
- }
-
- public <T extends Object> Object toSerializable(short version) {
- if(version < RaftVersions.LITHIUM_VERSION) {
- return toLegacySerializable();
- } else {
- return this;
- }
- }
-
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private <T> Object toLegacySerializable() {
- AppendEntriesMessages.AppendEntries.Builder to = AppendEntriesMessages.AppendEntries.newBuilder();
- to.setTerm(this.getTerm())
- .setLeaderId(this.getLeaderId())
- .setPrevLogTerm(this.getPrevLogTerm())
- .setPrevLogIndex(this.getPrevLogIndex())
- .setLeaderCommit(this.getLeaderCommit());
-
- for (ReplicatedLogEntry logEntry : this.getEntries()) {
-
- AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Builder arBuilder =
- AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.newBuilder();
-
- AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload.Builder arpBuilder =
- AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload.newBuilder();
-
- //get the client specific payload extensions and add them to the payload builder
- Map<GeneratedMessage.GeneratedExtension, T> map = logEntry.getData().encode();
- Iterator<Map.Entry<GeneratedMessage.GeneratedExtension, T>> iter = map.entrySet().iterator();
-
- while (iter.hasNext()) {
- Map.Entry<GeneratedMessage.GeneratedExtension, T> entry = iter.next();
- arpBuilder.setExtension(entry.getKey(), entry.getValue());
- }
-
- arpBuilder.setClientPayloadClassName(logEntry.getData().getClientPayloadClassName());
-
- arBuilder.setData(arpBuilder).setIndex(logEntry.getIndex()).setTerm(logEntry.getTerm());
- to.addLogEntries(arBuilder);
- }
-
- return to.build();
- }
-
- public static AppendEntries fromSerializable(Object serialized) {
- if(serialized instanceof AppendEntries) {
- return (AppendEntries)serialized;
- }
- else {
- return fromLegacySerializable((AppendEntriesMessages.AppendEntries) serialized);
- }