Class ConfigurableAddressProvider

java.lang.Object
java.util.AbstractCollection
java.util.AbstractSet
com.tangosol.net.ConfigurableAddressProvider
All Implemented Interfaces:
AddressProvider, DescribableAddressProvider, SocketAddressProvider, Iterable, Collection, Set
Direct Known Subclasses:
ConfigurableLocalAddressProvider

public class ConfigurableAddressProvider extends AbstractSet implements DescribableAddressProvider
ConfigurableAddressProvider is an implementation of the AddressProvider interface based on a static list of addresses configured in an XML element that contains one or more items in the following format:
 <socket-address>
   <address>...</address>
   <port>...</port>
 </socket-address>
 ...
 <address>...</address>
 
The order of items in the configured list will be randomized to provide basic load balancing.

This implementation is not thread safe.

Since:
Coherence 3.4
Author:
gg 2008-08-18
  • Field Details

    • m_listHolders

      A read-only list of ProvidedAddress objects.
    • m_iterAddr

      protected Iterator<InetSocketAddress> m_iterAddr
      An address iterator for the previously resolved address.
    • m_iLast

      protected int m_iLast
      Index of the last returned address.
    • m_fSafe

      protected boolean m_fSafe
      Specifies if the provider is only to return resolved addresses.
    • m_fResolve

      @Deprecated public boolean m_fResolve
      Deprecated.
      Specifies if the list of address need DNS resolution.
  • Constructor Details

    • ConfigurableAddressProvider

      @Deprecated public ConfigurableAddressProvider(XmlElement xmlConfig)
      Deprecated.
      Construct an instance of ConfigurableAddressProvider based on the specified XML element.

      Unresolvable addresses will be skipped.

      Parameters:
      xmlConfig - the XML element that contains the configuration info
    • ConfigurableAddressProvider

      public ConfigurableAddressProvider(Iterable<ConfigurableAddressProvider.AddressHolder> addressHolders, boolean fSafe)
      Parameters:
      addressHolders - the ConfigurableAddressProvider.AddressHolders
      fSafe - true if the provider skips unresolved addresses
    • ConfigurableAddressProvider

      @Deprecated public ConfigurableAddressProvider(XmlElement xmlConfig, boolean fSafe)
      Deprecated.
      Construct an instance of ConfigurableAddressProvider based on the specified XML element.
      Parameters:
      xmlConfig - the XML element that contains the configuration info
      fSafe - true if the provider skips unresolved addresses
  • Method Details

    • makeProvider

      @Deprecated public static AddressProvider makeProvider(XmlElement xmlConfig)
      Deprecated.
      Creates an instances of ConfigurableAddressProvider or RefreshableAddressProvider that refresh the address list of the ConfigurableAddressProvider asynchronously.
      Parameters:
      xmlConfig - the XML element that contains the configuration info
      Returns:
      an instance of the corresponding AddressProvider implementation
    • getNextAddress

      public InetSocketAddress getNextAddress()
      Specified by:
      getNextAddress in interface AddressProvider
      Specified by:
      getNextAddress in interface SocketAddressProvider
      Returns:
      the next available address or null if the list of available addresses was exhausted
    • accept

      public void accept()
      This method should be called by the client immediately after it determines that it can successfully use an address returned by the SocketAddressProvider.getNextAddress() method.
      Specified by:
      accept in interface SocketAddressProvider
    • reject

      public void reject(Throwable eCause)
      This method should be called by the client immediately after it determines that an attempt to use an address returned by the SocketAddressProvider.getNextAddress() method has failed.
      Specified by:
      reject in interface SocketAddressProvider
      Parameters:
      eCause - (optional) an exception that carries the reason why the the caller rejected the previously returned address
    • size

      public int size()
      Returns the number of elements in this collection. If the collection contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
      Specified by:
      size in interface Collection
      Specified by:
      size in interface Set
      Specified by:
      size in class AbstractCollection
      Returns:
      the number of elements in this collection
    • iterator

      public Iterator iterator()
      Returns an iterator over the elements contained in this collection.
      Specified by:
      iterator in interface Collection
      Specified by:
      iterator in interface Iterable
      Specified by:
      iterator in interface Set
      Specified by:
      iterator in class AbstractCollection
      Returns:
      an iterator over the elements contained in this collection
    • reset

      protected void reset()
      Make all addresses iterable, starting at the first address.
    • reset

      protected void reset(int iLast)
      Make all addresses iterable, starting at the index after the specified one.
      Parameters:
      iLast - the index of the last address returned
    • configure

      @Deprecated protected void configure(XmlElement xmlConfig)
      Deprecated.
      Configure this ConfigurableAddressProvider based on the specified XML.
      Parameters:
      xmlConfig - the XML element that contains the configuration info
    • sortHolders

      protected List sortHolders(List list)
      Sort the holders in the order to be returned by the getNextAddress() method. This implementation randomizes the holder list for simple load balancing.
      Parameters:
      list - the original list retrieved from the configuration
      Returns:
      the re-ordered list
    • equals

      public boolean equals(Object o)
      AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.

      Note: the general contract of hashCode and equals() should be preserved; AddressProviders which compare equals() should have the same hashCode.

      Specified by:
      equals in interface Collection
      Specified by:
      equals in interface Set
      Specified by:
      equals in interface SocketAddressProvider
      Overrides:
      equals in class AbstractSet
      Parameters:
      o - the Object to compare this AddressProvider to for equality
      Returns:
      true iff this AddressProvider is equal to the specified object
    • hashCode

      public int hashCode()
      Return the hash code for this AddressProvider.
      Specified by:
      hashCode in interface Collection
      Specified by:
      hashCode in interface Set
      Specified by:
      hashCode in interface SocketAddressProvider
      Overrides:
      hashCode in class AbstractSet
      Returns:
      the hash code for this AddressProvider
    • toString

      public String toString()
      Return a string representation of this ConfigurableAddressProvider.
      Overrides:
      toString in class AbstractCollection
      Returns:
      a string representation of the list of configured addresses
    • getAddressDescriptions

      public String[] getAddressDescriptions()
      Retrieve a human readable description of underlying addresses.
      Specified by:
      getAddressDescriptions in interface DescribableAddressProvider
      Returns:
      a string array of addresses in human readable format
    • resolveAddress

      protected Iterator<InetSocketAddress> resolveAddress(String sHost, int nPort)
      Resolve an address and port.
      Parameters:
      sHost - the host
      nPort - the port
      Returns:
      the InetSocketAddress