View Javadoc

1   /*
2    * Copyright (c) 1998-2002 The Jgroup Team.
3    *
4    * This program is free software; you can redistribute it and/or modify
5    * it under the terms of the GNU Lesser General Public License version 2 as
6    * published by the Free Software Foundation.
7    *
8    * This program is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   * GNU Lesser General Public License for more details.
12   *
13   * You should have received a copy of the GNU Lesser General Public License
14   * along with this program; if not, write to the Free Software
15   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16   *
17   */
18  
19  package jgroup.core;
20  
21  
22  /**
23   *  This interface must be implemented by all layers that should be
24   *  constructable by runtime parsing of the XML layer composition
25   *  framework.  Typically, a service interface (e.g., MembershipService)
26   *  will extend this interface to avoid additional interface
27   *  declarations in the actual layer implementation.
28   *
29   *  @author Hein Meling
30   *  @since Jgroup 1.2
31   */
32  public interface Layer
33  {
34  
35    /**
36     *  This is a special interface implemented by layers that has to perform
37     *  post construction finalization.
38     *
39     *  @author Hein Meling
40     *  @since Jgroup 2.1
41     */
42    public interface FinalizeLayer
43    {
44  
45      /**
46       *  This method is invoked on the layer, once the whole Jgroup group
47       *  manager construction has been completed.  The <code>complete()</code>
48       *  method is supposed to implemented stuff that depends on several
49       *  other group manager components having been constructed.
50       * 
51       *  @param server
52       *    The server using a layer implementing the <code>FinalizeLayer</code>
53       *    interface.
54       *  @exception JgroupException
55       *    Thrown if the layer could not be completed.
56       */
57      public void complete(Object server)
58        throws JgroupException;
59  
60    } // END FinalizeLayer
61  
62  
63    /**
64     *  Add a listener to this layer.  Many layers require to be notified
65     *  of events produced by other layers in order to provide its own
66     *  functionallity, and this method must be invoked to notify this
67     *  layer of an interested listener.  A listener may be another layer
68     *  or an application server replica.
69     *
70     *  @param listener
71     *    An <code>Object</code> representation of the listener interface.
72     *    This will typically be cast to the appropriate listener interface
73     *    type after checking the type with the <tt>instanceof</tt> operator.
74     *  @exception IllegalArgumentException
75     *    Raised if the given listener object do not implement any of the
76     *    listeners provided by this layer.
77     */
78    public void addListener(Object listener);
79  
80  } // END Layer