jdk/src/share/classes/javax/management/event/EventRelay.java
changeset 1004 5ba8217eb504
child 1247 b4c26443dee5
equal deleted inserted replaced
1003:b2f6b7e00c29 1004:5ba8217eb504
       
     1 /*
       
     2  * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Sun designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Sun in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    23  * have any questions.
       
    24  */
       
    25 
       
    26 package javax.management.event;
       
    27 
       
    28 import java.io.IOException;
       
    29 import java.util.concurrent.Executors;  // for javadoc
       
    30 import java.util.concurrent.ScheduledFuture;
       
    31 
       
    32 /**
       
    33  * This interface is used to specify a way to receive
       
    34  * notifications from a remote MBean server and then to forward the notifications
       
    35  * to an {@link EventClient}.
       
    36  *
       
    37  * @see <a href="package-summary.html#transports">Custom notification
       
    38  * transports</a>
       
    39  */
       
    40 public interface EventRelay {
       
    41     /**
       
    42      * Returns an identifier that is used by this {@code EventRelay} to identify
       
    43      * the client when communicating with the {@link EventClientDelegateMBean}.
       
    44      * <P> This identifier is obtained by calling
       
    45      * {@link EventClientDelegateMBean#addClient(String, Object[], String[])
       
    46      * EventClientDelegateMBean.addClient}.
       
    47      * <P> It is the {@code EventRelay} that calls {@code EventClientDelegateMBean} to obtain
       
    48      * the client identifier because it is the {@code EventRelay} that decides
       
    49      * how to get notifications from the {@code EventClientDelegateMBean},
       
    50      * by creating the appropriate {@link EventForwarder}.
       
    51      *
       
    52      * @return A client identifier.
       
    53      * @throws IOException If an I/O error occurs when communicating with
       
    54      * the {@code EventClientDelegateMBean}.
       
    55      */
       
    56     public String getClientId() throws IOException;
       
    57 
       
    58     /**
       
    59      * This method is called by {@link EventClient} to register a callback
       
    60      * to receive notifications from an {@link EventClientDelegateMBean} object.
       
    61      * A {@code null} value is allowed, which means that the {@code EventClient} suspends
       
    62      * reception of notifications, so that the {@code EventRelay} can decide to stop receiving
       
    63      * notifications from its {@code EventForwarder}.
       
    64      *
       
    65      * @param eventReceiver An {@link EventClient} callback to receive
       
    66      * events.
       
    67      */
       
    68     public void setEventReceiver(EventReceiver eventReceiver);
       
    69 
       
    70     /**
       
    71      * Stops receiving and forwarding notifications and performs any necessary
       
    72      * cleanup.  After calling this method, the {@link EventClient} will never
       
    73      * call any other methods of this object.
       
    74      *
       
    75      * @throws IOException If an I/O exception appears.
       
    76      *
       
    77      * @see EventClient#close
       
    78      */
       
    79     public void stop() throws IOException;
       
    80 }