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