Package com.tangosol.net
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
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
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A stateful holder for an obtaining an InetSocketAddress object. -
Field Summary
Modifier and TypeFieldDescriptionboolean
Deprecated.protected boolean
Specifies if the provider is only to return resolved addresses.protected int
Index of the last returned address.protected Iterator
<InetSocketAddress> An address iterator for the previously resolved address.protected List
<ConfigurableAddressProvider.AddressHolder> A read-only list of ProvidedAddress objects. -
Constructor Summary
ConstructorDescriptionConfigurableAddressProvider
(XmlElement xmlConfig) Deprecated.ConfigurableAddressProvider
(XmlElement xmlConfig, boolean fSafe) Deprecated.ConfigurableAddressProvider
(Iterable<ConfigurableAddressProvider.AddressHolder> addressHolders, boolean fSafe) Constructs aConfigurableAddressProvider
using the specifiedConfigurableAddressProvider.AddressHolder
s. -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept()
This method should be called by the client immediately after it determines that it can successfully use an address returned by theSocketAddressProvider.getNextAddress()
method.protected void
configure
(XmlElement xmlConfig) Deprecated.boolean
AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.String[]
Retrieve a human readable description of underlying addresses.Covariant ofSocketAddressProvider.getNextAddress()
which returns anInetSocketAddress
.int
hashCode()
Return the hash code for this AddressProvider.iterator()
Returns an iterator over the elements contained in this collection.static AddressProvider
makeProvider
(XmlElement xmlConfig) Deprecated.void
This method should be called by the client immediately after it determines that an attempt to use an address returned by theSocketAddressProvider.getNextAddress()
method has failed.protected void
reset()
Make all addresses iterable, starting at the first address.protected void
reset
(int iLast) Make all addresses iterable, starting at the index after the specified one.protected Iterator
<InetSocketAddress> resolveAddress
(String sHost, int nPort) Resolve an address and port.int
size()
Returns the number of elements in this collection.protected List
sortHolders
(List list) Sort the holders in the order to be returned by thegetNextAddress()
method.toString()
Return a string representation of this ConfigurableAddressProvider.Methods inherited from class java.util.AbstractSet
removeAll
Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Field Details
-
m_listHolders
A read-only list of ProvidedAddress objects. -
m_iterAddr
An address iterator for the previously resolved address. -
m_iLast
protected int m_iLastIndex of the last returned address. -
m_fSafe
protected boolean m_fSafeSpecifies if the provider is only to return resolved addresses. -
m_fResolve
Deprecated.Specifies if the list of address need DNS resolution.
-
-
Constructor Details
-
ConfigurableAddressProvider
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) Constructs aConfigurableAddressProvider
using the specifiedConfigurableAddressProvider.AddressHolder
s.- Parameters:
addressHolders
- theConfigurableAddressProvider.AddressHolder
sfSafe
- true if the provider skips unresolved addresses
-
ConfigurableAddressProvider
Deprecated.Construct an instance of ConfigurableAddressProvider based on the specified XML element.- Parameters:
xmlConfig
- the XML element that contains the configuration infofSafe
- true if the provider skips unresolved addresses
-
-
Method Details
-
makeProvider
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
Covariant ofSocketAddressProvider.getNextAddress()
which returns anInetSocketAddress
.- Specified by:
getNextAddress
in interfaceAddressProvider
- Specified by:
getNextAddress
in interfaceSocketAddressProvider
- 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 theSocketAddressProvider.getNextAddress()
method.- Specified by:
accept
in interfaceSocketAddressProvider
-
reject
This method should be called by the client immediately after it determines that an attempt to use an address returned by theSocketAddressProvider.getNextAddress()
method has failed.- Specified by:
reject
in interfaceSocketAddressProvider
- 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 interfaceCollection
- Specified by:
size
in interfaceSet
- Specified by:
size
in classAbstractCollection
- Returns:
- the number of elements in this collection
-
iterator
Returns an iterator over the elements contained in this collection.- Specified by:
iterator
in interfaceCollection
- Specified by:
iterator
in interfaceIterable
- Specified by:
iterator
in interfaceSet
- Specified by:
iterator
in classAbstractCollection
- 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.Configure this ConfigurableAddressProvider based on the specified XML.- Parameters:
xmlConfig
- the XML element that contains the configuration info
-
sortHolders
Sort the holders in the order to be returned by thegetNextAddress()
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
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 interfaceCollection
- Specified by:
equals
in interfaceSet
- Specified by:
equals
in interfaceSocketAddressProvider
- Overrides:
equals
in classAbstractSet
- 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 interfaceCollection
- Specified by:
hashCode
in interfaceSet
- Specified by:
hashCode
in interfaceSocketAddressProvider
- Overrides:
hashCode
in classAbstractSet
- Returns:
- the hash code for this AddressProvider
-
toString
Return a string representation of this ConfigurableAddressProvider.- Overrides:
toString
in classAbstractCollection
- Returns:
- a string representation of the list of configured addresses
-
getAddressDescriptions
Retrieve a human readable description of underlying addresses.- Specified by:
getAddressDescriptions
in interfaceDescribableAddressProvider
- Returns:
- a string array of addresses in human readable format
-
resolveAddress
Resolve an address and port.- Parameters:
sHost
- the hostnPort
- the port- Returns:
- the InetSocketAddress
-