From b4f8838b15342670c31753a484abf0129e3c9653 Mon Sep 17 00:00:00 2001
From: jcduff <jcduff@localhost>
Date: Thu, 23 Oct 2008 14:04:24 +0000
Subject: [PATCH] The commit will bring the following features :     - An updated version of the underlying database. BDB JE 3.3 is now used.     - Attribute API refactoring providing a better abstraction and offering improved performances.     - A new GUI called the Control-Panel to replace the Status-Panel: the specifications for this       GUI are available on OpenDS Wiki and contains a link to a mockup.        See <https://www.opends.org/wiki/page/ControlPanelUISpecification>.     - Some changes in the replication protocol to implement "Assured Replication Mode". The        specifications are on OpenDS Wiki at <https://www.opends.org/wiki/page/AssuredMode> and section 7       described some of the replication changes required to support this. Assured Replication is not finished,       but the main replication protocol changes to support it are done. As explained by Gilles on an email on       the Dev mailing list (http://markmail.org/message/46rgo3meq3vriy4a), with these changes the newer versions       of OpenDS may not be able to replicate with OpenDS 1.0 instances.     - Support for Service Tags on the platforms where the functionality is available and enabled. Specifications       are published at <https://www.opends.org/wiki/page/OpenDSServiceTagEnabled>. For more information on       Service Tags see <http://wikis.sun.com/display/ServiceTag/Sun+Service+Tag+FAQ>.     - The Admin Connector service. In order to provide agentry of the OpenDS server at any time, a new service       has been added, dedicated to the administration, configuration and monitoring of the server.       An overview of the Admin Connector service and it's use is available on the       OpenDS wiki <https://www.opends.org/wiki/page/ManagingAdministrationTrafficToTheServer>     - Updates to the various command line tools to support the Admin Connector service.     - Some internal re-architecting of the server to put the foundation of future developments such as virtual       directory services. The new NetworkGroups and WorkFlow internal services which have been specified in       <https://www.opends.org/wiki/page/BasicOperationRoutingThroughNetworkGroup> are now implemented.     - Many bug fixes...

---
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java |   46 +++++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
index 5ce848c..0bc3382 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
@@ -36,7 +36,7 @@
  * protocol.
  *
  * This interface is designed to make easy the move from one format
- * of the ReplicationMessage on the wire to another format.
+ * of the ReplicationMsg on the wire to another format.
  */
 public interface ProtocolSession
 {
@@ -50,37 +50,53 @@
   public abstract void close() throws IOException;
 
   /**
-   * This method is called when a ReplicationMessage must be sent to
-   * the remote entity.
+   * This method is called when a ReplicationMsg must be sent to
+   * the remote entity. The PDU is send using serialization of the current
+   * protocol version.
    *
    * It can be called by several threads and must implement appropriate
    * replication (typically, this method or a part of it should be
    * synchronized).
    *
-   * @param msg The ReplicationMessage that must be sent.
+   * @param msg The ReplicationMsg that must be sent.
    * @throws IOException If an IO error happen during the publish process.
    */
-  public abstract void publish(ReplicationMessage msg)
+  public abstract void publish(ReplicationMsg msg)
                   throws IOException;
 
   /**
-   * Attempt to receive a ReplicationMessage.
+   * Same as publish(ReplicationMsg msg), but forcing the usage of a particular
+   * protocol version for the PDU serialization.
+   *
+   * @param msg The ReplicationMsg that must be sent.
+   * @param reqProtocolVersion The protocol version to use for serialization.
+   * The version should normally be older than the current one.
+   * @throws IOException If an IO error happen during the publish process.
+   */
+  public abstract void publish(ReplicationMsg msg, short reqProtocolVersion)
+                  throws IOException;
+
+  /**
+   * Attempt to receive a ReplicationMsg.
    * This method should block the calling thread until a
-   * ReplicationMessage is available or until an error condition.
+   * ReplicationMsg is available or until an error condition.
    *
    * This method can only be called by a single thread and therefore does not
-   * neet to implement any replication.
+   * need to implement any replication.
    *
-   * @return The ReplicationMessage that was received.
-   * @throws IOException When error happened durin IO process.
+   * @return The ReplicationMsg that was received.
+   * @throws IOException When error happened during IO process.
    * @throws ClassNotFoundException When the data received does extend the
-   *         ReplicationMessage class.
+   *         ReplicationMsg class.
    * @throws DataFormatException When the data received is not formatted as a
-   *         ReplicationMessage.
+   *         ReplicationMsg.
+   * @throws NotSupportedOldVersionPDUException If the received PDU is part of
+   * an old protocol version and we do not support it.
    */
-  public abstract ReplicationMessage receive()
+  public abstract ReplicationMsg receive()
                   throws IOException, ClassNotFoundException,
-                         DataFormatException;
+                         DataFormatException,
+                         NotSupportedOldVersionPDUException;
 
   /**
    * Stop using the security layer, if there is any.
@@ -106,7 +122,7 @@
   * With this option set to a non-zero value, calls to the receive() method
   * block for only this amount of time after which a
   * java.net.SocketTimeoutException is raised.
-  * The Broker is valid and useable even after such an Exception is raised.
+  * The Broker is valid and usable even after such an Exception is raised.
   *
   * @param timeout the specified timeout, in milliseconds.
   * @throws SocketException if there is an error in the underlying protocol,

--
Gitblit v1.10.0