From 26ff1f0755680cbce7b5bdb136750b2b1bc9e4ed Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Fri, 10 Nov 2006 08:05:56 +0000
Subject: [PATCH] issue 508 These changes implement a window mechanism in the sycnhronization protocol.
---
opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java | 33 ++++++++++++++++++++++++++++++---
1 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java b/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
index 5cd6738..2767579 100644
--- a/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
+++ b/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
@@ -46,15 +46,19 @@
private String serverURL;
private ServerState serverState;
+ private int windowSize;
+
/**
* Create a ChangelogStartMessage.
*
* @param serverId changelog server id
* @param serverURL changelog server URL
* @param baseDn base DN for which the ChangelogStartMessage is created.
+ * @param windowSize The window size.
* @param serverState our ServerState for this baseDn.
*/
public ChangelogStartMessage(short serverId, String serverURL, DN baseDn,
+ int windowSize,
ServerState serverState)
{
this.serverId = serverId;
@@ -63,6 +67,7 @@
this.baseDn = baseDn.toNormalizedString();
else
this.baseDn = null;
+ this.windowSize = windowSize;
this.serverState = serverState;
}
@@ -76,7 +81,7 @@
public ChangelogStartMessage(byte[] in) throws DataFormatException
{
/* The ChangelogStartMessage is encoded in the form :
- * <baseDn><ServerId><ServerUrl><ServerState>
+ * <baseDn><ServerId><ServerUrl><windowsize><ServerState>
*/
try
{
@@ -108,6 +113,13 @@
pos += length +1;
/*
+ * read the window size
+ */
+ length = getNextLength(in, pos);
+ windowSize = Integer.valueOf(new String(in, pos, length, "UTF-8"));
+ pos += length +1;
+
+ /*
* read the ServerState
*/
serverState = new ServerState(in, pos, in.length-1);
@@ -179,16 +191,18 @@
public byte[] getBytes()
{
/* The ChangelogStartMessage is stored in the form :
- * <operation type><basedn><serverid><serverURL><serverState>
+ * <operation type><basedn><serverid><serverURL><windowsize><serverState>
*/
try {
byte[] byteDn = baseDn.getBytes("UTF-8");
byte[] byteServerId = String.valueOf(serverId).getBytes("UTF-8");
byte[] byteServerUrl = serverURL.getBytes("UTF-8");
byte[] byteServerState = serverState.getBytes();
+ byte[] byteWindowSize = String.valueOf(windowSize).getBytes("UTF-8");
int length = 1 + byteDn.length + 1 + byteServerId.length + 1 +
- byteServerUrl.length + 1 + byteServerState.length + 1;
+ byteServerUrl.length + 1 + byteWindowSize.length + 1 +
+ byteServerState.length + 1;
byte[] resultByteArray = new byte[length];
@@ -205,6 +219,9 @@
/* put the ServerURL */
pos = addByteArray(byteServerUrl, resultByteArray, pos);
+ /* put the window size */
+ pos = addByteArray(byteWindowSize, resultByteArray, pos);
+
/* put the ServerState */
pos = addByteArray(byteServerState, resultByteArray, pos);
@@ -215,4 +232,14 @@
return null;
}
}
+
+ /**
+ * get the window size for the server that created this message.
+ *
+ * @return The window size for the server that created this message.
+ */
+ public int getWindowSize()
+ {
+ return windowSize;
+ }
}
--
Gitblit v1.10.0