/* * 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 net.jini.discovery; import net.jini.discovery.DiscoveryListener; import net.jini.core.lookup.ServiceRegistrar; /** * This interface defines methods related to the discovery event mechanism * and discovery process termination. Through this interface an entity can * register or un-register for discovery events, discard a lookup service, * or terminate the discovery process. * * @author Sun Microsystems, Inc. */ public interface DiscoveryManagement { /** * Adds an instance of <code>DiscoveryListener</code> to the set of * objects listening for discovery events. Once the listener is * registered, it will be notified of all lookup services discovered * to date, and will then be notified as new lookup services are * discovered or existing lookup services are discarded. * <p> * If <code>null</code> is input to this method, a * <code>NullPointerException</code> is thrown. If the listener * input to this method duplicates (using the <code>equals</code> * method) another element in the current set of listeners, no action * is taken. * * @param listener an instance of <code>DiscoveryListener</code> * corresponding to the listener to add to the set of * listeners. * * @throws java.lang.NullPointerException if <code>null</code> is * input to the <code>listener</code> parameter * * @see #removeDiscoveryListener * @see net.jini.discovery.DiscoveryListener */ public void addDiscoveryListener(DiscoveryListener listener); /** * Removes a listener from the set of objects listening for discovery * events. If the listener object input to this method does not exist * in the set of listeners, then this method will take no action. * * @param listener an instance of <code>DiscoveryListener</code> * corresponding to the listener to remove from the set * of listeners. * * @see #addDiscoveryListener * @see net.jini.discovery.DiscoveryListener */ public void removeDiscoveryListener(DiscoveryListener listener); /** * Returns an array of instances of <code>ServiceRegistrar</code>, each * corresponding to a proxy to one of the currently discovered lookup * services. For each invocation of this method, a new array is returned. * * @return array of instances of <code>ServiceRegistrar</code>, each * corresponding to a proxy to one of the currently discovered * lookup services * * @see net.jini.core.lookup.ServiceRegistrar */ public ServiceRegistrar[] getRegistrars(); /** * Removes an instance of <code>ServiceRegistrar</code> from the * managed set of lookup services, making the corresponding lookup * service eligible for re-discovery. This method takes no action if * the parameter input to this method is <code>null</code>, or if it * does not match (using <code>equals</code>) any of the elements in * the managed set. * * @param proxy the instance of <code>ServiceRegistrar</code> to remove * from the managed set of lookup services * * @see net.jini.core.lookup.ServiceRegistrar */ public void discard(ServiceRegistrar proxy); /** * Ends all discovery processing being performed by the current * implementation of this interface. After this method is invoked, * no new lookup services will be discovered, and the effect of any * new operations performed on the current implementation object are * undefined. Any additional termination semantics must be defined * by the implementation class itself. */ public void terminate(); }