From e66d460903009243d4aac4079d37006cf366fb4d Mon Sep 17 00:00:00 2001
From: mmarie <mmarie@localhost>
Date: Thu, 18 Dec 2008 09:35:55 +0000
Subject: [PATCH] issue 3640 : Refactor Replication code to make it more generic
---
opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java | 17 ++++++++++++-----
opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java | 2 +-
opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java | 25 +++++++++++++++++++++++++
3 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
index 559ae24..e6f1b7c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -172,6 +172,31 @@
}
/**
+ * Replace the Server State with another ServerState.
+ *
+ * @param serverState The ServerState.
+ *
+ * @return a boolean indicating if the update was meaningful.
+ */
+ public boolean reload(ServerState serverState) {
+ if (serverState == null) {
+ return false;
+ }
+
+ boolean result = false;
+
+ clear();
+ for (Short id : serverState) {
+ ChangeNumber maxChangeNumber = getMaxChangeNumber(id);
+ if (update(maxChangeNumber)) {
+ result = true;
+ }
+ }
+
+ return (result);
+ }
+
+ /**
* return a Set of String usable as a textual representation of
* a Server state.
* format : time seqnum id
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
index c05e2ae..fb5c846 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
@@ -107,7 +107,7 @@
pos += length +1;
// entry
- length = getNextLength(in, pos);
+ length = in.length - (pos + 1);
this.entryByteArray = new byte[length];
for (int i=0; i<length; i++)
{
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
index 7e0bd4b..e3c86d8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
@@ -146,11 +146,18 @@
* use by this input stream.
*/
public int read()
- throws IOException
+ throws IOException
{
- // This method is not supposed to be called to make an LDIF import
- // for replication.
- throw new IOException("Not implemented");
+ if (closed) {
+ return -1;
+ }
+
+ byte[] b = new byte[1];
+
+ if (read(b, 0, 1) == 0) {
+ throw new IOException();
+ }
+
+ return ((int)b[0]);
}
}
-
--
Gitblit v1.10.0