- public static AppendEntries fromSerializable(Object o){
- AppendEntriesMessages.AppendEntries from = (AppendEntriesMessages.AppendEntries) o;
-
- List<ReplicatedLogEntry> logEntryList = new ArrayList<>();
- for (AppendEntriesMessages.AppendEntries.ReplicatedLogEntry leProtoBuff : from.getLogEntriesList()) {
-
- Payload payload = null ;
- try {
- if(leProtoBuff.getData() != null && leProtoBuff.getData().getClientPayloadClassName() != null) {
- String clientPayloadClassName = leProtoBuff.getData().getClientPayloadClassName();
- payload = (Payload) Class.forName(clientPayloadClassName).newInstance();
- payload = payload.decode(leProtoBuff.getData());
- payload.setClientPayloadClassName(clientPayloadClassName);
- } else {
- LOG.error("Payload is null or payload does not have client payload class name");
- }
-
- } catch (InstantiationException e) {
- LOG.error("InstantiationException when instantiating "+leProtoBuff.getData().getClientPayloadClassName(), e);
- } catch (IllegalAccessException e) {
- LOG.error("IllegalAccessException when accessing "+leProtoBuff.getData().getClientPayloadClassName(), e);
- } catch (ClassNotFoundException e) {
- LOG.error("ClassNotFoundException when loading "+leProtoBuff.getData().getClientPayloadClassName(), e);
+ @Override
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeLong(appendEntries.getTerm());
+ out.writeObject(appendEntries.leaderId);
+ out.writeLong(appendEntries.prevLogTerm);
+ out.writeLong(appendEntries.prevLogIndex);
+ out.writeLong(appendEntries.leaderCommit);
+ out.writeLong(appendEntries.replicatedToAllIndex);
+ out.writeShort(appendEntries.payloadVersion);
+
+ out.writeInt(appendEntries.entries.size());
+ for (ReplicatedLogEntry e: appendEntries.entries) {
+ out.writeLong(e.getIndex());
+ out.writeLong(e.getTerm());
+ out.writeObject(e.getData());