View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *  
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *  
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License. 
18   *  
19   */
20  package org.apache.directory.mitosis.service.protocol.handler;
21  
22  
23  import org.apache.directory.mitosis.service.ReplicationContext;
24  import org.apache.mina.common.IdleStatus;
25  import org.apache.mina.common.IoHandler;
26  
27  /**
28   * An interface that provides handler methods for events which occurs
29   * when a two replicas communicate with each other.  This interface is
30   * very similar to MINA {@link IoHandler}, but there's a difference
31   * in that this interface provide a {@link ReplicationContext} instead of
32   * an {@link IoHandler}.  It's usually wrapped by
33   * {@link ReplicationProtocolHandler} to work with MINA.
34   * 
35   * @author The Apache Directory Project (dev@directory.apache.org)
36   * @version $Rev$, $Date$
37   */
38  public interface ReplicationContextHandler
39  {
40      /**
41       * Invoked when a connection is established between two replicas.
42       */
43      void contextBegin( ReplicationContext ctx ) throws Exception;
44  
45      /**
46       * Invoked when a connection is closed between two replicas.
47       */
48      void contextEnd( ReplicationContext ctx ) throws Exception;
49  
50      /**
51       * Invoked when a message is received from a peer replica.
52       */
53      void messageReceived( ReplicationContext ctx, Object message ) throws Exception;
54  
55      /**
56       * Invoked when a message is received from a peer replica.
57       */
58      void messageSent( ReplicationContext ctx, Object message ) throws Exception;
59  
60      /**
61       * Invoked when an exception is raised during the communication or
62       * executing replication logic.
63       */
64      void exceptionCaught( ReplicationContext ctx, Throwable cause ) throws Exception;
65  
66      /**
67       * Invoked when two replicas are not exchanging any data for certain
68       * amount of time.
69       */
70      void contextIdle( ReplicationContext ctx, IdleStatus status ) throws Exception;
71  }