001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.hivemind.lib;
016    
017    /**
018     * Coordinates propogation of remote events.  
019     * Manages a list of
020     * {@link org.apache.hivemind.lib.RemoteExceptionListener} and
021     * will perform notifications on demand.  This allows
022     * objects which cache remote data to discard it after a remote exception.
023     * 
024     * <p>
025     * This service is available as
026     * <codehivemind.lib.RemoteExceptionCoordinator</code>.
027     * 
028     *
029     * @author Howard Lewis Ship
030     */
031    
032    public interface RemoteExceptionCoordinator
033    {
034        public void addRemoteExceptionListener(RemoteExceptionListener listener);
035        public void removeRemoteExceptionListener(RemoteExceptionListener listener);
036        
037        /**
038         * Invoked by an object which has caught a remote exception of some
039         * form.
040         */
041        public void fireRemoteExceptionDidOccur(Object source, Throwable exception);
042    }