package org.infinispan.remoting.transport.jgroups;
import java.util.Properties;
import org.jgroups.JChannel;
/**
* A hook to pass in a JGroups channel. Implementations need to provide a public no-arg constructor as instances are
* created via reflection.
*
* @author Manik Surtani
* @since 4.0
*/
public interface JGroupsChannelLookup {
/**
* Retrieves a JGroups channel. Passes in all of the properties used to configure the channel.
* @param p properties
* @return a JGroups channel
*/
JChannel getJGroupsChannel(Properties p);
/**
* @return true if the JGroupsTransport should connect the channel before using it; false if the transport
* should assume that the channel is connected.
*/
boolean shouldConnect();
/**
* @return true if the JGroupsTransport should disconnect the channel once it is done with it; false if
* the channel is to be left connected.
*/
boolean shouldDisconnect();
/**
* @return true if the JGroupsTransport should close the channel once it is done with it; false if
* the channel is to be left open.
*/
boolean shouldClose();
}