001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2006-2008 Sun Microsystems, Inc.
026     */
027    package org.opends.server.replication.protocol;
028    
029    import java.io.Serializable;
030    import java.util.zip.DataFormatException;
031    
032    
033    /**
034     * This message is used by LDAP or Replication Server that have been
035     * out of credit for a while and want to check that the remote servers.
036     *
037     * A sending entity that is blocked because its send window is closed
038     * for a while should create such a message to check that the window
039     * closure is valid.
040     *
041     * An entity that received such a message should respond with a
042     * WindowUpdate message indicating the curent credit available.
043     */
044    public class WindowProbe extends ReplicationMessage implements
045        Serializable
046    {
047      private static final long serialVersionUID = 8442267608764026867L;
048    
049      /**
050       * Create a new WindowProbe message.
051       */
052      public WindowProbe()
053      {
054      }
055    
056      /**
057       * Creates a new WindowProbe from its encoded form.
058       *
059       * @param in The byte array containing the encoded form of the
060       *           WindowMessage.
061       * @throws DataFormatException If the byte array does not contain a valid
062       *                             encoded form of the WindowMessage.
063       */
064      public WindowProbe(byte[] in) throws DataFormatException
065      {
066        // WindowProbe Message only contains its type.
067        if (in[0] != MSG_TYPE_WINDOW_PROBE)
068          throw new DataFormatException("input is not a valid Window Message");
069      }
070    
071      /**
072       * {@inheritDoc}
073       */
074      @Override
075      public byte[] getBytes()
076      {
077        // WindowProbe Message only contains its type.
078    
079        byte[] resultByteArray = new byte[1];
080        resultByteArray[0] = MSG_TYPE_WINDOW_PROBE;
081    
082        return resultByteArray;
083      }
084    }