BUG-5280: separate request sequence and transmit sequence
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / concepts / AbstractMessageProxy.java
index 4b60aecefa7e01d146a9c3afb9387d5a564a66c8..48ad0d39bbc333e8f6f84f63c611c3387d84213d 100644 (file)
@@ -15,6 +15,7 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.concepts.WritableIdentifier;
+import org.opendaylight.yangtools.concepts.WritableObjects;
 
 /**
  * Abstract Externalizable proxy for use with {@link Message} subclasses.
@@ -27,6 +28,7 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
 abstract class AbstractMessageProxy<T extends WritableIdentifier, C extends Message<T, C>> implements Externalizable {
     private static final long serialVersionUID = 1L;
     private T target;
+    private long sequence;
 
     protected AbstractMessageProxy() {
         // For Externalizable
@@ -34,22 +36,25 @@ abstract class AbstractMessageProxy<T extends WritableIdentifier, C extends Mess
 
     AbstractMessageProxy(final @Nonnull C message) {
         this.target = message.getTarget();
+        this.sequence = message.getSequence();
     }
 
     @Override
     public void writeExternal(final ObjectOutput out) throws IOException {
         target.writeTo(out);
+        WritableObjects.writeLong(out, sequence);
     }
 
     @Override
     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
         target = Verify.verifyNotNull(readTarget(in));
+        sequence = WritableObjects.readLong(in);
     }
 
     protected final Object readResolve() {
-        return Verify.verifyNotNull(createMessage(target));
+        return Verify.verifyNotNull(createMessage(target, sequence));
     }
 
     protected abstract @Nonnull T readTarget(@Nonnull DataInput in) throws IOException;
-    abstract @Nonnull C createMessage(@Nonnull T target);
+    abstract @Nonnull C createMessage(@Nonnull T target, long sequence);
 }
\ No newline at end of file