/* * Copyright 2008 the original author or authors. * * Licensed 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 org.rioproject.impl.fdh; import net.jini.lookup.LookupCache; import java.util.Properties; /** * The FaultDetectionHandler is loaded by client entities do determine whether a * service is reachable. Developers may choose to implement custom fault * detection algorithms and protocols to determine service reachability and * use those approaches in concrete implementations of this interface * * @author Dennis Reedy */ public interface FaultDetectionHandler<T> { /** * Configure the FaultDetectionHandler * * @param properties Properties to configure the FaultDetectionHandler */ void configure(Properties properties); /** * Register a FaultDetectionListener * * @param listener The FaultDetectionListener to register */ void register(FaultDetectionListener<T> listener); /** * Unregister a FaultDetectionListener * * @param listener The FaultDetectionListener to unregister */ void unregister(FaultDetectionListener<T> listener); /** * Set the LookupCache * * @param lCache A LookupCache instance to be used to be notified of service * transition events from a Jini Lookup Service */ void setLookupCache(LookupCache lCache); /** * Begin monitoring the service * * @param service The service that the FaultDetectionHandler will monitor * @param serviceID An Object representing a unique service identifier for * the service being monitored. */ void monitor(Object service, T serviceID); /** * Terminate the FaultDetectionHandler */ void terminate(); }