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