BUG-5280: separate request sequence and transmit sequence
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / commands / ConnectClientSuccessProxyV1.java
index 6c9ae2a19ad4eb4840d9e5ab903b98d4995f286a..f9fddb72766a72f3400ccb1569b330bc2e1701f8 100644 (file)
@@ -32,7 +32,7 @@ final class ConnectClientSuccessProxyV1 extends AbstractSuccessProxy<ClientIdent
 
     private List<ActorSelection> alternates;
     private ActorRef backend;
-    private long maxMessages;
+    private int maxMessages;
 
     public ConnectClientSuccessProxyV1() {
         // For Externalizable
@@ -42,6 +42,7 @@ final class ConnectClientSuccessProxyV1 extends AbstractSuccessProxy<ClientIdent
         super(success);
         this.alternates = success.getAlternates();
         this.backend = success.getBackend();
+        this.maxMessages = success.getMaxMessages();
         // We are ignoring the DataTree, it is not serializable anyway
     }
 
@@ -49,38 +50,32 @@ final class ConnectClientSuccessProxyV1 extends AbstractSuccessProxy<ClientIdent
     public void writeExternal(final ObjectOutput out) throws IOException {
         super.writeExternal(out);
 
-        out.writeUTF(Serialization.serializedActorPath(backend));
+        out.writeObject(Serialization.serializedActorPath(backend));
+        out.writeInt(maxMessages);
 
         out.writeInt(alternates.size());
         for (ActorSelection b : alternates) {
             out.writeObject(b.toSerializationFormat());
         }
-
-        out.writeLong(maxMessages);
     }
 
     @Override
     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
         super.readExternal(in);
 
-        backend = JavaSerializer.currentSystem().value().provider().resolveActorRef(in.readUTF());
-
-        final int backendsSize = in.readInt();
-        if (backendsSize < 1) {
-            throw new IOException("Illegal number of backends " + backendsSize);
-        }
+        backend = JavaSerializer.currentSystem().value().provider().resolveActorRef((String) in.readObject());
+        maxMessages = in.readInt();
 
-        alternates = new ArrayList<>(backendsSize);
-        for (int i = 0; i < backendsSize; ++i) {
+        final int alternatesSize = in.readInt();
+        alternates = new ArrayList<>(alternatesSize);
+        for (int i = 0; i < alternatesSize; ++i) {
             alternates.add(ActorSelection.apply(ActorRef.noSender(), (String)in.readObject()));
         }
-
-        maxMessages = in.readLong();
     }
 
     @Override
-    protected ConnectClientSuccess createSuccess(final ClientIdentifier target) {
-        return new ConnectClientSuccess(target, backend, alternates, Optional.empty(), maxMessages);
+    protected ConnectClientSuccess createSuccess(final ClientIdentifier target, final long sequence) {
+        return new ConnectClientSuccess(target, sequence, backend, alternates, Optional.empty(), maxMessages);
     }
 
     @Override