From 5ec0cb08889c9f1a24fd4cc8b139dcdb942dd92a Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Fri, 14 Aug 2009 12:37:19 +0000
Subject: [PATCH] Support for External change log compatible with draft-good-ldap-changelog-04.txt , March 2003
---
opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java | 45 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
index 590d83d..2e1dc1d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
@@ -45,18 +45,23 @@
// The value of the cookie updated with the current change
private MultiDomainServerState cookie;
+ // The changenumber as specified by draft-good-ldap-changelog.
+ private int draftChangeNumber;
+
/**
* Creates a new message.
* @param update The provided update.
* @param cookie The provided cookie value
* @param serviceId The provided serviceId.
+ * @param draftChangeNumber The provided draft change number.
*/
public ECLUpdateMsg(LDAPUpdateMsg update, MultiDomainServerState cookie,
- String serviceId)
+ String serviceId, int draftChangeNumber)
{
this.cookie = cookie;
this.serviceId = serviceId;
this.updateMsg = update;
+ this.draftChangeNumber = draftChangeNumber;
}
/**
@@ -93,6 +98,12 @@
this.serviceId = new String(in, pos, length, "UTF-8");
pos += length + 1;
+ // Decode the draft changeNumber
+ length = getNextLength(in, pos);
+ this.draftChangeNumber = Integer.valueOf(
+ new String(in, pos, length, "UTF-8"));
+ pos += length + 1;
+
// Decode the msg
/* Read the mods : all the remaining bytes but the terminating 0 */
length = in.length - pos - 1;
@@ -152,9 +163,10 @@
public String toString()
{
return "ECLUpdateMsg:[" +
- "updateMsg: " + updateMsg +
- "cookie: " + cookie +
- "serviceId: " + serviceId + "]";
+ " updateMsg: " + updateMsg +
+ " cookie: " + cookie +
+ " draftChangeNumber: " + draftChangeNumber +
+ " serviceId: " + serviceId + "]";
}
/**
@@ -165,10 +177,13 @@
{
byte[] byteCookie = String.valueOf(cookie).getBytes("UTF-8");
byte[] byteServiceId = String.valueOf(serviceId).getBytes("UTF-8");
+ byte[] byteDraftChangeNumber =
+ Integer.toString(draftChangeNumber).getBytes("UTF-8");
byte[] byteUpdateMsg = updateMsg.getBytes();
int length = 1 + byteCookie.length +
1 + byteServiceId.length +
+ 1 + byteDraftChangeNumber.length +
1 + byteUpdateMsg.length + 1;
byte[] resultByteArray = new byte[length];
@@ -183,9 +198,31 @@
// Encode serviceid
pos = addByteArray(byteServiceId, resultByteArray, pos);
+ /* Put the draftChangeNumber */
+ pos = addByteArray(byteDraftChangeNumber, resultByteArray, pos);
+
// Encode msg
pos = addByteArray(byteUpdateMsg, resultByteArray, pos);
return resultByteArray;
}
+
+ /**
+ * Setter for the draftChangeNumber of this change.
+ * @param draftChangeNumber the provided draftChangeNumber for this change.
+ */
+ public void setDraftChangeNumber(int draftChangeNumber)
+ {
+ this.draftChangeNumber = draftChangeNumber;
+ }
+
+ /**
+ * Getter for the draftChangeNumber of this change.
+ * @return the draftChangeNumber of this change.
+ */
+ public int getDraftChangeNumber()
+ {
+ return this.draftChangeNumber;
+ }
+
}
--
Gitblit v1.10.0