@Override
public void serialize(NFA<T> record, DataOutputView target) throws IOException {
serializeStates(record.states, target);
target.writeLong(record.windowTime);
target.writeBoolean(record.handleTimeout);
sharedBufferSerializer.serialize(record.eventSharedBuffer, target);
target.writeInt(record.computationStates.size());
StringSerializer stateNameSerializer = StringSerializer.INSTANCE;
LongSerializer timestampSerializer = LongSerializer.INSTANCE;
DeweyNumber.DeweyNumberSerializer versionSerializer = new DeweyNumber.DeweyNumberSerializer();
for (ComputationState<T> computationState: record.computationStates) {
stateNameSerializer.serialize(computationState.getState().getName(), target);
stateNameSerializer.serialize(computationState.getPreviousState() == null
? null : computationState.getPreviousState().getName(), target);
timestampSerializer.serialize(computationState.getTimestamp(), target);
versionSerializer.serialize(computationState.getVersion(), target);
timestampSerializer.serialize(computationState.getStartTimestamp(), target);
target.writeInt(computationState.getCounter());
if (computationState.getEvent() == null) {
target.writeBoolean(false);
} else {
target.writeBoolean(true);
eventSerializer.serialize(computationState.getEvent(), target);
}
}
}