You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2007/09/17 00:12:09 UTC

svn commit: r576193 [1/6] - in /directory/apacheds/trunk/mitosis/src: main/java/org/apache/directory/mitosis/common/ main/java/org/apache/directory/mitosis/configuration/ main/java/org/apache/directory/mitosis/service/ main/java/org/apache/directory/mi...

Author: elecharny
Date: Sun Sep 16 15:12:06 2007
New Revision: 576193

URL: http://svn.apache.org/viewvc?rev=576193&view=rev
Log:
removed ^M from files

Modified:
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/CSNVector.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/MutableReplicationInterceptorConfiguration.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/ReplicationInterceptorConfiguration.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/DefaultReplicationContext.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationContext.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationServiceException.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/Constants.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BaseMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BaseMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesAckMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesAckMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesAckMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesAckMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryAckMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryAckMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LoginAckMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LoginAckMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LoginMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/LoginMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/ReplicationClientProtocolCodecFactory.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/ReplicationServerProtocolCodecFactory.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/ResponseMessageDecoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/codec/ResponseMessageEncoder.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/handler/ReplicationClientProtocolHandler.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/handler/ReplicationContextHandler.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/handler/ReplicationProtocolHandler.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/handler/ReplicationServerProtocolHandler.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/BaseMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/BeginLogEntriesAckMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/LogEntryAckMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/LogEntryMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/LoginAckMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/LoginMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/protocol/message/ResponseMessage.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/ReplicationLogIterator.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/ReplicationStore.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/ReplicationStoreException.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationLogIterator.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java
    directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/SQLUtil.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/common/DefaultCSNFactoryTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/AbstractReplicationServiceTestCase.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/AbstractMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesAckMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesAckMessageCodecTest2.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/BeginLogEntriesMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesAckMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/EndLogEntriesMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryAckMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/LogEntryMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/LoginAckMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/protocol/codec/LoginMessageCodecTest.java
    directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStoreTest.java

Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/CSNVector.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/CSNVector.java?rev=576193&r1=576192&r2=576193&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/CSNVector.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/CSNVector.java Sun Sep 16 15:12:06 2007
@@ -1,173 +1,173 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.mitosis.common;
-
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
-import org.apache.directory.shared.ldap.util.EqualsBuilder;
-import org.apache.directory.shared.ldap.util.HashCodeBuilder;
-
-
-/**
- * Creates a set of {@link CSN}s, which is defined in LDUP specification.
- * Each {@link CSN} in the same {@link CSNVector} has different
- * {@link ReplicaId} component from each other.  Its data structure is 
- * similar to a {@link Map} whose key is {@link ReplicaId}.
- * <p>
- * {@link CSNVector} is usually used to represent 'Update Vector (UV)' and
- * 'Purge Vector (PV)'.  Please refer to the LDUP specification and other 
- * Mitosis classes such as {@link ReplicationClientContextHandler}.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class CSNVector
-{
-    /**
-     * Declares the Serial Version Uid.
-     *
-     * @see <a
-     *      href="http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid">Always
-     *      Declare Serial Version Uid</a>
-     */
-    private static final long serialVersionUID = 1L;
-
-    private final Map<ReplicaId,CSN> csns = new HashMap<ReplicaId,CSN>();
-
-    /**
-     * Creates a new empty instance.
-     */
-    public CSNVector()
-    {
-    }
-
-    /**
-     * Adds the specified <tt>csn</tt> to this vector.  If there's a
-     * {@link CSN} with the same {@link ReplicaId}, it is replaced by
-     * the specified <tt>csn</tt>.
-     */
-    public void setCSN( CSN csn )
-    {
-        csns.put( csn.getReplicaId(), csn );
-    }
-
-
-    /**
-     * Adds all {@link CSN}s that the specified <tt>vector</tt> contains to
-     * this vector.  If there's a {@link CSN} with the same {@link ReplicaId}
-     * in this vector, it is replaced by the {@link CSN} in the specified
-     * <tt>vector</tt>.
-     */
-    public void setAllCSN( CSNVector vector )
-    {
-        Iterator<CSN> i = vector.csns.values().iterator();
-        while ( i.hasNext() )
-        {
-            setCSN( i.next() );
-        }
-    }
-
-    /**
-     * Returns the {@link CSN} whith the specified <tt>replicaId</tt> from
-     * this vector.
-     * 
-     * @return <tt>null</tt> if there's no match
-     */
-    public CSN getCSN( ReplicaId replicaId )
-    {
-        return csns.get( replicaId );
-    }
-
-
-    /**
-     * Removed the {@link CSN} whith the specified <tt>replicaId</tt> from
-     * this vector and returns the removed {@link CSN}.
-     * 
-     * @return <tt>null</tt> if there's no match
-     */
-    public CSN removeCSN( ReplicaId replicaId )
-    {
-        return csns.remove( replicaId );
-    }
-
-
-    /**
-     * Returns the {@link Set} of the {@link ReplicaId}s extracted from
-     * the {@link CSN}s in this vector.
-     */
-    public Set<ReplicaId> getReplicaIds()
-    {
-        return csns.keySet();
-    }
-
-    /**
-     * Returns the number of {@link CSN}s that this vector contains.
-     */
-    public int size()
-    {
-        return csns.size();
-    }
-
-    /**
-     * Returns <tt>true</tt> if and if only the specified <tt>object</tt> is
-     * a {@link CSNVector} and contains the {@link CSN}s with the same values.
-     */
-    public boolean equals( Object object )
-    {
-        if ( object == this )
-        {
-            return true;
-        }
-        if ( !( object instanceof CSNVector ) )
-        {
-            return false;
-        }
-        CSNVector rhs = ( CSNVector ) object;
-        return new EqualsBuilder().append( this.csns, rhs.csns ).isEquals();
-    }
-
-    /**
-     * Returns the hash code of this vector, calculated from each {@link CSN}
-     * element. 
-     */
-    public int hashCode()
-    {
-        return new HashCodeBuilder( -33446267, -459427867 ).append( this.csns ).toHashCode();
-    }
-
-    /**
-     * Creates a deep copy of this vector and returns it.
-     */
-    public CSNVector clone()
-    {
-        CSNVector result = new CSNVector();
-        result.csns.putAll( this.csns );
-        return result;
-    }
-
-    public String toString()
-    {
-        return csns.toString();
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.mitosis.common;
+
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
+import org.apache.directory.shared.ldap.util.EqualsBuilder;
+import org.apache.directory.shared.ldap.util.HashCodeBuilder;
+
+
+/**
+ * Creates a set of {@link CSN}s, which is defined in LDUP specification.
+ * Each {@link CSN} in the same {@link CSNVector} has different
+ * {@link ReplicaId} component from each other.  Its data structure is 
+ * similar to a {@link Map} whose key is {@link ReplicaId}.
+ * <p>
+ * {@link CSNVector} is usually used to represent 'Update Vector (UV)' and
+ * 'Purge Vector (PV)'.  Please refer to the LDUP specification and other 
+ * Mitosis classes such as {@link ReplicationClientContextHandler}.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CSNVector
+{
+    /**
+     * Declares the Serial Version Uid.
+     *
+     * @see <a
+     *      href="http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid">Always
+     *      Declare Serial Version Uid</a>
+     */
+    private static final long serialVersionUID = 1L;
+
+    private final Map<ReplicaId,CSN> csns = new HashMap<ReplicaId,CSN>();
+
+    /**
+     * Creates a new empty instance.
+     */
+    public CSNVector()
+    {
+    }
+
+    /**
+     * Adds the specified <tt>csn</tt> to this vector.  If there's a
+     * {@link CSN} with the same {@link ReplicaId}, it is replaced by
+     * the specified <tt>csn</tt>.
+     */
+    public void setCSN( CSN csn )
+    {
+        csns.put( csn.getReplicaId(), csn );
+    }
+
+
+    /**
+     * Adds all {@link CSN}s that the specified <tt>vector</tt> contains to
+     * this vector.  If there's a {@link CSN} with the same {@link ReplicaId}
+     * in this vector, it is replaced by the {@link CSN} in the specified
+     * <tt>vector</tt>.
+     */
+    public void setAllCSN( CSNVector vector )
+    {
+        Iterator<CSN> i = vector.csns.values().iterator();
+        while ( i.hasNext() )
+        {
+            setCSN( i.next() );
+        }
+    }
+
+    /**
+     * Returns the {@link CSN} whith the specified <tt>replicaId</tt> from
+     * this vector.
+     * 
+     * @return <tt>null</tt> if there's no match
+     */
+    public CSN getCSN( ReplicaId replicaId )
+    {
+        return csns.get( replicaId );
+    }
+
+
+    /**
+     * Removed the {@link CSN} whith the specified <tt>replicaId</tt> from
+     * this vector and returns the removed {@link CSN}.
+     * 
+     * @return <tt>null</tt> if there's no match
+     */
+    public CSN removeCSN( ReplicaId replicaId )
+    {
+        return csns.remove( replicaId );
+    }
+
+
+    /**
+     * Returns the {@link Set} of the {@link ReplicaId}s extracted from
+     * the {@link CSN}s in this vector.
+     */
+    public Set<ReplicaId> getReplicaIds()
+    {
+        return csns.keySet();
+    }
+
+    /**
+     * Returns the number of {@link CSN}s that this vector contains.
+     */
+    public int size()
+    {
+        return csns.size();
+    }
+
+    /**
+     * Returns <tt>true</tt> if and if only the specified <tt>object</tt> is
+     * a {@link CSNVector} and contains the {@link CSN}s with the same values.
+     */
+    public boolean equals( Object object )
+    {
+        if ( object == this )
+        {
+            return true;
+        }
+        if ( !( object instanceof CSNVector ) )
+        {
+            return false;
+        }
+        CSNVector rhs = ( CSNVector ) object;
+        return new EqualsBuilder().append( this.csns, rhs.csns ).isEquals();
+    }
+
+    /**
+     * Returns the hash code of this vector, calculated from each {@link CSN}
+     * element. 
+     */
+    public int hashCode()
+    {
+        return new HashCodeBuilder( -33446267, -459427867 ).append( this.csns ).toHashCode();
+    }
+
+    /**
+     * Creates a deep copy of this vector and returns it.
+     */
+    public CSNVector clone()
+    {
+        CSNVector result = new CSNVector();
+        result.csns.putAll( this.csns );
+        return result;
+    }
+
+    public String toString()
+    {
+        return csns.toString();
+    }
+}

Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/MutableReplicationInterceptorConfiguration.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/MutableReplicationInterceptorConfiguration.java?rev=576193&r1=576192&r2=576193&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/MutableReplicationInterceptorConfiguration.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/MutableReplicationInterceptorConfiguration.java Sun Sep 16 15:12:06 2007
@@ -1,49 +1,49 @@
-/*
- *   Licensed to the Apache Software Foundation (ASF) under one
- *   or more contributor license agreements.  See the NOTICE file
- *   distributed with this work for additional information
- *   regarding copyright ownership.  The ASF licenses this file
- *   to you under the Apache License, Version 2.0 (the
- *   "License"); you may not use this file except in compliance
- *   with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing,
- *   software distributed under the License is distributed on an
- *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *   KIND, either express or implied.  See the License for the
- *   specific language governing permissions and limitations
- *   under the License.
- *
- */
-package org.apache.directory.mitosis.configuration;
-
-
-/**
- * A specialized mutable version of the InterceptorConfiguration for the 
- * replication service which contains all the parameters to configure 
- * this service.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$, $Date$
- */
-public class MutableReplicationInterceptorConfiguration extends ReplicationInterceptorConfiguration
-{
-    public void setReplicationConfiguration( ReplicationConfiguration replicationConfiguration )
-    {
-        super.setReplicationConfiguration( replicationConfiguration );
-    }
-
-
-    public void setInterceptorClassName( String interceptorClassName )
-    {
-        super.setInterceptorClassName( interceptorClassName );
-    }
-
-
-    public void setName( String name )
-    {
-        super.setName( name );
-    }
-}
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.mitosis.configuration;
+
+
+/**
+ * A specialized mutable version of the InterceptorConfiguration for the 
+ * replication service which contains all the parameters to configure 
+ * this service.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class MutableReplicationInterceptorConfiguration extends ReplicationInterceptorConfiguration
+{
+    public void setReplicationConfiguration( ReplicationConfiguration replicationConfiguration )
+    {
+        super.setReplicationConfiguration( replicationConfiguration );
+    }
+
+
+    public void setInterceptorClassName( String interceptorClassName )
+    {
+        super.setInterceptorClassName( interceptorClassName );
+    }
+
+
+    public void setName( String name )
+    {
+        super.setName( name );
+    }
+}

Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/ReplicationInterceptorConfiguration.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/ReplicationInterceptorConfiguration.java?rev=576193&r1=576192&r2=576193&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/ReplicationInterceptorConfiguration.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/configuration/ReplicationInterceptorConfiguration.java Sun Sep 16 15:12:06 2007
@@ -1,48 +1,48 @@
-/*
- *   Licensed to the Apache Software Foundation (ASF) under one
- *   or more contributor license agreements.  See the NOTICE file
- *   distributed with this work for additional information
- *   regarding copyright ownership.  The ASF licenses this file
- *   to you under the Apache License, Version 2.0 (the
- *   "License"); you may not use this file except in compliance
- *   with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing,
- *   software distributed under the License is distributed on an
- *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *   KIND, either express or implied.  See the License for the
- *   specific language governing permissions and limitations
- *   under the License.
- *
- */
-package org.apache.directory.mitosis.configuration;
-
-
-import org.apache.directory.server.core.configuration.InterceptorConfiguration;
-
-
-/**
- * A specialized InterceptorConfiguration for the replication service which
- * contains all the parameters to configure this service.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$, $Date$
- */
-public class ReplicationInterceptorConfiguration extends InterceptorConfiguration
-{
-    private ReplicationConfiguration replicationConfiguration;
-    
-    
-    public ReplicationConfiguration getReplicationConfiguration()
-    {
-        return replicationConfiguration;
-    }
-    
-    
-    protected void setReplicationConfiguration( ReplicationConfiguration replicationConfiguration )
-    {
-        this.replicationConfiguration = replicationConfiguration;
-    }
-}
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.mitosis.configuration;
+
+
+import org.apache.directory.server.core.configuration.InterceptorConfiguration;
+
+
+/**
+ * A specialized InterceptorConfiguration for the replication service which
+ * contains all the parameters to configure this service.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ReplicationInterceptorConfiguration extends InterceptorConfiguration
+{
+    private ReplicationConfiguration replicationConfiguration;
+    
+    
+    public ReplicationConfiguration getReplicationConfiguration()
+    {
+        return replicationConfiguration;
+    }
+    
+    
+    protected void setReplicationConfiguration( ReplicationConfiguration replicationConfiguration )
+    {
+        this.replicationConfiguration = replicationConfiguration;
+    }
+}

Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/DefaultReplicationContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/DefaultReplicationContext.java?rev=576193&r1=576192&r2=576193&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/DefaultReplicationContext.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/DefaultReplicationContext.java Sun Sep 16 15:12:06 2007
@@ -1,217 +1,217 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.mitosis.service;
-
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import org.apache.directory.mitosis.common.Replica;
-import org.apache.directory.mitosis.configuration.ReplicationConfiguration;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientProtocolHandler;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationContextHandler;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationProtocolHandler;
-import org.apache.directory.mitosis.service.protocol.message.BaseMessage;
-import org.apache.directory.server.core.DirectoryServiceConfiguration;
-import org.apache.mina.common.IoSession;
-import org.apache.mina.util.SessionLog;
-
-/**
- * The default implementation of {@link ReplicationContext}
- * 
- * @author The Apache Directory Project Team
- */
-public class DefaultReplicationContext implements ReplicationContext
-{
-    private static final Timer expirationTimer = new Timer( "ReplicationMessageExpirer" );
-
-    private final ReplicationService service;
-    private final ReplicationConfiguration configuration;
-    private final DirectoryServiceConfiguration serviceConfiguration;
-    private final IoSession session;
-    private final Map<Integer,ExpirationTask> expirableMessages = new HashMap<Integer,ExpirationTask>();
-    private int nextSequence;
-    private Replica peer;
-    private State state = State.INIT;
-
-
-    public DefaultReplicationContext( ReplicationService service, DirectoryServiceConfiguration serviceCfg,
-        ReplicationConfiguration configuration, IoSession session )
-    {
-        this.service = service;
-        this.configuration = configuration;
-        this.serviceConfiguration = serviceCfg;
-        this.session = session;
-    }
-
-
-    public ReplicationService getService()
-    {
-        return service;
-    }
-
-
-    public ReplicationConfiguration getConfiguration()
-    {
-        return configuration;
-    }
-
-
-    public DirectoryServiceConfiguration getServiceConfiguration()
-    {
-        return serviceConfiguration;
-    }
-
-
-    public IoSession getSession()
-    {
-        return session;
-    }
-
-
-    public int getNextSequence()
-    {
-        return nextSequence++;
-    }
-
-
-    public Replica getPeer()
-    {
-        return peer;
-    }
-
-
-    public void setPeer( Replica peer )
-    {
-        assert peer != null;
-        this.peer = peer;
-    }
-
-
-    public State getState()
-    {
-        return state;
-    }
-
-
-    public void setState( State state )
-    {
-        this.state = state;
-    }
-
-
-    public void scheduleExpiration( Object message )
-    {
-        BaseMessage bm = ( BaseMessage ) message;
-        ExpirationTask task = new ExpirationTask( bm );
-        synchronized ( expirableMessages )
-        {
-            expirableMessages.put( new Integer( bm.getSequence() ), task );
-        }
-
-        expirationTimer.schedule( task, configuration.getResponseTimeout() * 1000L );
-    }
-
-
-    public Object cancelExpiration( int sequence )
-    {
-        ExpirationTask task = removeTask( sequence );
-        if ( task == null )
-        {
-            return null;
-        }
-
-        task.cancel();
-        return task.message;
-    }
-    
-    public boolean replicate()
-    {
-        ReplicationProtocolHandler handler =
-            ( ReplicationProtocolHandler ) this.session.getHandler();
-        if( !( handler instanceof ReplicationClientProtocolHandler ) )
-        {
-            throw new UnsupportedOperationException(
-                    "Only clients can begin replication." );
-        }
-        
-        ReplicationContextHandler contextHandler = handler.getContextHandler();
-        return ( ( ReplicationClientContextHandler ) contextHandler ).beginReplication( this );
-    }
-
-
-    public void cancelAllExpirations()
-    {
-        synchronized ( expirableMessages )
-        {
-            Iterator i = expirableMessages.values().iterator();
-            while ( i.hasNext() )
-            {
-                ( ( ExpirationTask ) i.next() ).cancel();
-            }
-        }
-    }
-
-
-    public int getScheduledExpirations()
-    {
-        synchronized ( expirableMessages )
-        {
-            return expirableMessages.size();
-        }
-    }
-
-
-    private ExpirationTask removeTask( int sequence )
-    {
-        ExpirationTask task;
-        synchronized ( expirableMessages )
-        {
-            task = expirableMessages.remove( new Integer( sequence ) );
-        }
-        return task;
-    }
-
-    private class ExpirationTask extends TimerTask
-    {
-        private final BaseMessage message;
-
-
-        private ExpirationTask( Object message )
-        {
-            this.message = ( BaseMessage ) message;
-        }
-
-
-        public void run()
-        {
-            if ( removeTask( message.getSequence() ) == this )
-            {
-                SessionLog.warn( getSession(), "No response within " + configuration.getResponseTimeout()
-                    + " second(s) for message #" + message.getSequence() );
-                getSession().close();
-            }
-        }
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.mitosis.service;
+
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.apache.directory.mitosis.common.Replica;
+import org.apache.directory.mitosis.configuration.ReplicationConfiguration;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientProtocolHandler;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationContextHandler;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationProtocolHandler;
+import org.apache.directory.mitosis.service.protocol.message.BaseMessage;
+import org.apache.directory.server.core.DirectoryServiceConfiguration;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.util.SessionLog;
+
+/**
+ * The default implementation of {@link ReplicationContext}
+ * 
+ * @author The Apache Directory Project Team
+ */
+public class DefaultReplicationContext implements ReplicationContext
+{
+    private static final Timer expirationTimer = new Timer( "ReplicationMessageExpirer" );
+
+    private final ReplicationService service;
+    private final ReplicationConfiguration configuration;
+    private final DirectoryServiceConfiguration serviceConfiguration;
+    private final IoSession session;
+    private final Map<Integer,ExpirationTask> expirableMessages = new HashMap<Integer,ExpirationTask>();
+    private int nextSequence;
+    private Replica peer;
+    private State state = State.INIT;
+
+
+    public DefaultReplicationContext( ReplicationService service, DirectoryServiceConfiguration serviceCfg,
+        ReplicationConfiguration configuration, IoSession session )
+    {
+        this.service = service;
+        this.configuration = configuration;
+        this.serviceConfiguration = serviceCfg;
+        this.session = session;
+    }
+
+
+    public ReplicationService getService()
+    {
+        return service;
+    }
+
+
+    public ReplicationConfiguration getConfiguration()
+    {
+        return configuration;
+    }
+
+
+    public DirectoryServiceConfiguration getServiceConfiguration()
+    {
+        return serviceConfiguration;
+    }
+
+
+    public IoSession getSession()
+    {
+        return session;
+    }
+
+
+    public int getNextSequence()
+    {
+        return nextSequence++;
+    }
+
+
+    public Replica getPeer()
+    {
+        return peer;
+    }
+
+
+    public void setPeer( Replica peer )
+    {
+        assert peer != null;
+        this.peer = peer;
+    }
+
+
+    public State getState()
+    {
+        return state;
+    }
+
+
+    public void setState( State state )
+    {
+        this.state = state;
+    }
+
+
+    public void scheduleExpiration( Object message )
+    {
+        BaseMessage bm = ( BaseMessage ) message;
+        ExpirationTask task = new ExpirationTask( bm );
+        synchronized ( expirableMessages )
+        {
+            expirableMessages.put( new Integer( bm.getSequence() ), task );
+        }
+
+        expirationTimer.schedule( task, configuration.getResponseTimeout() * 1000L );
+    }
+
+
+    public Object cancelExpiration( int sequence )
+    {
+        ExpirationTask task = removeTask( sequence );
+        if ( task == null )
+        {
+            return null;
+        }
+
+        task.cancel();
+        return task.message;
+    }
+    
+    public boolean replicate()
+    {
+        ReplicationProtocolHandler handler =
+            ( ReplicationProtocolHandler ) this.session.getHandler();
+        if( !( handler instanceof ReplicationClientProtocolHandler ) )
+        {
+            throw new UnsupportedOperationException(
+                    "Only clients can begin replication." );
+        }
+        
+        ReplicationContextHandler contextHandler = handler.getContextHandler();
+        return ( ( ReplicationClientContextHandler ) contextHandler ).beginReplication( this );
+    }
+
+
+    public void cancelAllExpirations()
+    {
+        synchronized ( expirableMessages )
+        {
+            Iterator i = expirableMessages.values().iterator();
+            while ( i.hasNext() )
+            {
+                ( ( ExpirationTask ) i.next() ).cancel();
+            }
+        }
+    }
+
+
+    public int getScheduledExpirations()
+    {
+        synchronized ( expirableMessages )
+        {
+            return expirableMessages.size();
+        }
+    }
+
+
+    private ExpirationTask removeTask( int sequence )
+    {
+        ExpirationTask task;
+        synchronized ( expirableMessages )
+        {
+            task = expirableMessages.remove( new Integer( sequence ) );
+        }
+        return task;
+    }
+
+    private class ExpirationTask extends TimerTask
+    {
+        private final BaseMessage message;
+
+
+        private ExpirationTask( Object message )
+        {
+            this.message = ( BaseMessage ) message;
+        }
+
+
+        public void run()
+        {
+            if ( removeTask( message.getSequence() ) == this )
+            {
+                SessionLog.warn( getSession(), "No response within " + configuration.getResponseTimeout()
+                    + " second(s) for message #" + message.getSequence() );
+                getSession().close();
+            }
+        }
+    }
+}

Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationContext.java?rev=576193&r1=576192&r2=576193&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationContext.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationContext.java Sun Sep 16 15:12:06 2007
@@ -1,167 +1,167 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.mitosis.service;
-
-
-import org.apache.directory.mitosis.common.Replica;
-import org.apache.directory.mitosis.configuration.ReplicationConfiguration;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationContextHandler;
-import org.apache.directory.mitosis.service.protocol.handler.ReplicationServerContextHandler;
-import org.apache.directory.server.core.DirectoryServiceConfiguration;
-import org.apache.mina.common.IoSession;
-
-
-/**
- * A <a href="http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm">context object</a>
- * that provides the functions required for a client or a server to implement
- * networking code related with replication communication.  This is provided
- * to and used by {@link ReplicationClientContextHandler} and
- * {@link ReplicationServerContextHandler}.
- *   
- * @author The Apache Directory Project Team
- */
-public interface ReplicationContext
-{
-    /**
-     * Returns <a href="http://mina.apache.org/">MINA</a> {@link IoSession}
-     * instance that is associated with the current connection to
-     * the remote {@link Replica}.
-     */
-    IoSession getSession();
-
-    /**
-     * Returns the current {@link ReplicationConfiguration} of the
-     * {@link Replica} which is managing this context.
-     */
-    ReplicationConfiguration getConfiguration();
-
-    /**
-     * Returns the {@link ReplicationService} which is managing this
-     * context.
-     */
-    ReplicationService getService();
-
-
-    /**
-     * Returns the {@link DirectoryServiceConfiguration} which owns the
-     * {@link ReplicationService} which is managing this context.
-     */
-    DirectoryServiceConfiguration getServiceConfiguration();
-
-
-    /**
-     * Generates a new and unique sequence number of protocol message.
-     * @return the new sequence number.
-     */
-    int getNextSequence();
-
-
-    /**
-     * Returns the remote peer {@link Replica} that this context is connected
-     * to. 
-     */
-    Replica getPeer();
-
-
-    /**
-     * Sets the remote peer {@link Replica} that this context is connected
-     * to.  A user has authenticate the remote peer first and call this method
-     * manually to prevent unauthorized access.
-     */
-    void setPeer( Replica peer );
-
-    /**
-     * Returns the current state of the {@link Replica} this context is
-     * managing.
-     */
-    State getState();
-
-    /**
-     * Sets the current state of the {@link Replica} this context is
-     * managing.
-     */
-    void setState( State state );
-
-
-    /**
-     * Schedules an expiration of the specified <tt>message</tt>.  A user of
-     * this context could call this method with the message it has written out
-     * to the remote peer.  If {@link #cancelExpiration(int)} method is not
-     * invoked within a certain timeout, an exception will be raised to
-     * {@link ReplicationContextHandler#exceptionCaught(ReplicationContext, Throwable)}.
-     */
-    void scheduleExpiration( Object message );
-
-    /**
-     * Cancels the expiration scheduled by calling
-     * {@link #scheduleExpiration(Object)}.  A user of this context could
-     * call this method when the response message has been received to
-     * stop the expiration for the message with the specified
-     * <tt>sequence</tt> number.
-     * 
-     * @return the request message with the specified <tt>sequence</tt> number
-     */
-    Object cancelExpiration( int sequence );
-
-    /**
-     * Cancells all scheduled expirations.  A user of this context could
-     * call this method when the current connection is closed.
-     */
-    void cancelAllExpirations();
-
-    /**
-     * Returns the number of the scheduled experations.  A user of this
-     * contexst could check this value before sending a new message to the
-     * remote peer to prevent {@link OutOfMemoryError} by limiting the number
-     * of the messages which didn't get their responses.
-     */
-    int getScheduledExpirations();
-    
-    
-    /**
-     * Forces this context to send replication data to the peer replica immediately.
-     * 
-     * @return <tt>true</tt> if the replication has been started,
-     *         <tt>false</tt> if the replication didn't start because
-     *         the replication process is already in progress or
-     *         the client is currently logging in to the server yet.
-     */
-    boolean replicate();
-
-    /**
-     * Represents the state of the connection between two {@link Replica}s.
-     * 
-     * @author The Apache Directory Project Team
-     */
-    public enum State
-    {
-        /**
-         * Connection is established.
-         */
-        INIT,
-
-        /**
-         * Client has logged in and is ready to exchange information.
-         */
-        READY,
-        ;
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.mitosis.service;
+
+
+import org.apache.directory.mitosis.common.Replica;
+import org.apache.directory.mitosis.configuration.ReplicationConfiguration;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationClientContextHandler;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationContextHandler;
+import org.apache.directory.mitosis.service.protocol.handler.ReplicationServerContextHandler;
+import org.apache.directory.server.core.DirectoryServiceConfiguration;
+import org.apache.mina.common.IoSession;
+
+
+/**
+ * A <a href="http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm">context object</a>
+ * that provides the functions required for a client or a server to implement
+ * networking code related with replication communication.  This is provided
+ * to and used by {@link ReplicationClientContextHandler} and
+ * {@link ReplicationServerContextHandler}.
+ *   
+ * @author The Apache Directory Project Team
+ */
+public interface ReplicationContext
+{
+    /**
+     * Returns <a href="http://mina.apache.org/">MINA</a> {@link IoSession}
+     * instance that is associated with the current connection to
+     * the remote {@link Replica}.
+     */
+    IoSession getSession();
+
+    /**
+     * Returns the current {@link ReplicationConfiguration} of the
+     * {@link Replica} which is managing this context.
+     */
+    ReplicationConfiguration getConfiguration();
+
+    /**
+     * Returns the {@link ReplicationService} which is managing this
+     * context.
+     */
+    ReplicationService getService();
+
+
+    /**
+     * Returns the {@link DirectoryServiceConfiguration} which owns the
+     * {@link ReplicationService} which is managing this context.
+     */
+    DirectoryServiceConfiguration getServiceConfiguration();
+
+
+    /**
+     * Generates a new and unique sequence number of protocol message.
+     * @return the new sequence number.
+     */
+    int getNextSequence();
+
+
+    /**
+     * Returns the remote peer {@link Replica} that this context is connected
+     * to. 
+     */
+    Replica getPeer();
+
+
+    /**
+     * Sets the remote peer {@link Replica} that this context is connected
+     * to.  A user has authenticate the remote peer first and call this method
+     * manually to prevent unauthorized access.
+     */
+    void setPeer( Replica peer );
+
+    /**
+     * Returns the current state of the {@link Replica} this context is
+     * managing.
+     */
+    State getState();
+
+    /**
+     * Sets the current state of the {@link Replica} this context is
+     * managing.
+     */
+    void setState( State state );
+
+
+    /**
+     * Schedules an expiration of the specified <tt>message</tt>.  A user of
+     * this context could call this method with the message it has written out
+     * to the remote peer.  If {@link #cancelExpiration(int)} method is not
+     * invoked within a certain timeout, an exception will be raised to
+     * {@link ReplicationContextHandler#exceptionCaught(ReplicationContext, Throwable)}.
+     */
+    void scheduleExpiration( Object message );
+
+    /**
+     * Cancels the expiration scheduled by calling
+     * {@link #scheduleExpiration(Object)}.  A user of this context could
+     * call this method when the response message has been received to
+     * stop the expiration for the message with the specified
+     * <tt>sequence</tt> number.
+     * 
+     * @return the request message with the specified <tt>sequence</tt> number
+     */
+    Object cancelExpiration( int sequence );
+
+    /**
+     * Cancells all scheduled expirations.  A user of this context could
+     * call this method when the current connection is closed.
+     */
+    void cancelAllExpirations();
+
+    /**
+     * Returns the number of the scheduled experations.  A user of this
+     * contexst could check this value before sending a new message to the
+     * remote peer to prevent {@link OutOfMemoryError} by limiting the number
+     * of the messages which didn't get their responses.
+     */
+    int getScheduledExpirations();
+    
+    
+    /**
+     * Forces this context to send replication data to the peer replica immediately.
+     * 
+     * @return <tt>true</tt> if the replication has been started,
+     *         <tt>false</tt> if the replication didn't start because
+     *         the replication process is already in progress or
+     *         the client is currently logging in to the server yet.
+     */
+    boolean replicate();
+
+    /**
+     * Represents the state of the connection between two {@link Replica}s.
+     * 
+     * @author The Apache Directory Project Team
+     */
+    public enum State
+    {
+        /**
+         * Connection is established.
+         */
+        INIT,
+
+        /**
+         * Client has logged in and is ready to exchange information.
+         */
+        READY,
+        ;
+    }
+}