From b48ce50fdf4d73e8be3799e3a7c6c2bf9d1b2965 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Sun, 02 Sep 2007 17:58:07 +0000
Subject: [PATCH] fix for #1733 & #845 - Initialization of replication

---
 opends/src/server/org/opends/server/replication/protocol/ReplServerInfoMessage.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/protocol/ReplServerInfoMessage.java b/opends/src/server/org/opends/server/replication/protocol/ReplServerInfoMessage.java
index b048b8a..22215c6 100644
--- a/opends/src/server/org/opends/server/replication/protocol/ReplServerInfoMessage.java
+++ b/opends/src/server/org/opends/server/replication/protocol/ReplServerInfoMessage.java
@@ -51,6 +51,7 @@
 public class ReplServerInfoMessage extends ReplicationMessage
 {
   private List<String> connectedServers = null;
+  private long generationId;
 
   /**
    * Creates a new changelogInfo message from its encoded form.
@@ -68,15 +69,23 @@
         throw new DataFormatException(
         "Input is not a valid changelogInfo Message.");
 
-      connectedServers = new ArrayList<String>();
       int pos = 1;
+
+      /* read the generationId */
+      int length = getNextLength(in, pos);
+      generationId = Long.valueOf(new String(in, pos, length,
+          "UTF-8"));
+      pos += length +1;
+
+      /* read the connected servers */
+      connectedServers = new ArrayList<String>();
       while (pos < in.length)
       {
         /*
          * Read the next server ID
          * first calculate the length then construct the string
          */
-        int length = getNextLength(in, pos);
+        length = getNextLength(in, pos);
         connectedServers.add(new String(in, pos, length, "UTF-8"));
         pos += length +1;
       }
@@ -92,10 +101,14 @@
    * connected servers.
    *
    * @param connectedServers The list of currently connected servers ID.
+   * @param generationId     The generationId currently associated with this
+   *                         domain.
    */
-  public ReplServerInfoMessage(List<String> connectedServers)
+  public ReplServerInfoMessage(List<String> connectedServers,
+      long generationId)
   {
     this.connectedServers = connectedServers;
+    this.generationId = generationId;
   }
 
   /**
@@ -110,6 +123,12 @@
 
       /* Put the message type */
       oStream.write(MSG_TYPE_REPL_SERVER_INFO);
+
+      // Put the generationId
+      oStream.write(String.valueOf(generationId).getBytes("UTF-8"));
+      oStream.write(0);
+
+      // Put the servers
       if (connectedServers.size() >= 1)
       {
         for (String server : connectedServers)
@@ -119,6 +138,7 @@
           oStream.write(0);
         }
       }
+
       return oStream.toByteArray();
     }
     catch (IOException e)
@@ -139,4 +159,29 @@
   {
     return connectedServers;
   }
+
+  /**
+   * Get the generationId from this message.
+   * @return The generationId.
+   */
+  public long getGenerationId()
+  {
+    return generationId;
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String toString()
+  {
+    String csrvs = "";
+    for (String s : connectedServers)
+    {
+      csrvs += s + "/";
+    }
+    return ("ReplServerInfoMessage: genId=" + getGenerationId() +
+            " Connected peers:" + csrvs);
+  }
+
 }

--
Gitblit v1.10.0