public class ConfigurableAddressProvider extends AbstractSet implements DescribableAddressProvider
<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.
Modifier and Type | Class and Description |
---|---|
static class |
ConfigurableAddressProvider.AddressHolder
A stateful holder for an obtaining an InetSocketAddress object.
|
Modifier and Type | Field and Description |
---|---|
boolean |
m_fResolve
Deprecated.
|
protected boolean |
m_fSafe
Specifies if the provider is only to return resolved addresses.
|
protected int |
m_iLast
Index of the last returned address.
|
protected Iterator<InetSocketAddress> |
m_iterAddr
An address iterator for the previously resolved address.
|
protected List<ConfigurableAddressProvider.AddressHolder> |
m_listHolders
A list of ProvidedAddress objects.
|
Constructor and Description |
---|
ConfigurableAddressProvider(Iterable<ConfigurableAddressProvider.AddressHolder> addressHolders, boolean fSafe)
Constructs a
ConfigurableAddressProvider using the specified ConfigurableAddressProvider.AddressHolder s. |
ConfigurableAddressProvider(XmlElement xmlConfig)
Deprecated.
|
ConfigurableAddressProvider(XmlElement xmlConfig, boolean fSafe)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
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. |
protected void |
configure(XmlElement xmlConfig)
Deprecated.
|
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.
|
String[] |
getAddressDescriptions()
Retrieve a human readable description of underlying addresses.
|
InetSocketAddress |
getNextAddress()
Covariant of
SocketAddressProvider.getNextAddress() which returns an InetSocketAddress . |
int |
hashCode()
Return the hash code for this AddressProvider.
|
Iterator |
iterator()
Returns an iterator over the elements contained in this collection.
|
static AddressProvider |
makeProvider(XmlElement xmlConfig)
Deprecated.
|
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. |
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 the
getNextAddress() method. |
String |
toString()
Return a string representation of this ConfigurableAddressProvider.
|
removeAll
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, spliterator, toArray, toArray
parallelStream, removeIf, stream
protected List<ConfigurableAddressProvider.AddressHolder> m_listHolders
protected Iterator<InetSocketAddress> m_iterAddr
protected int m_iLast
protected boolean m_fSafe
@Deprecated public boolean m_fResolve
@Deprecated public ConfigurableAddressProvider(XmlElement xmlConfig)
Unresolvable addresses will be skipped.
xmlConfig
- the XML element that contains the configuration infopublic ConfigurableAddressProvider(Iterable<ConfigurableAddressProvider.AddressHolder> addressHolders, boolean fSafe)
ConfigurableAddressProvider
using the specified ConfigurableAddressProvider.AddressHolder
s.addressHolders
- the ConfigurableAddressProvider.AddressHolder
sfSafe
- true if the provider skips unresolved addresses@Deprecated public ConfigurableAddressProvider(XmlElement xmlConfig, boolean fSafe)
xmlConfig
- the XML element that contains the configuration infofSafe
- true if the provider skips unresolved addresses@Deprecated public static AddressProvider makeProvider(XmlElement xmlConfig)
xmlConfig
- the XML element that contains the configuration infopublic InetSocketAddress getNextAddress()
SocketAddressProvider.getNextAddress()
which returns an InetSocketAddress
.getNextAddress
in interface AddressProvider
getNextAddress
in interface SocketAddressProvider
public void accept()
SocketAddressProvider.getNextAddress()
method.accept
in interface SocketAddressProvider
public void reject(Throwable eCause)
SocketAddressProvider.getNextAddress()
method has failed.reject
in interface SocketAddressProvider
eCause
- (optional) an exception that carries the reason why the the caller rejected the previously returned addresspublic int size()
size
in interface Collection
size
in interface Set
size
in class AbstractCollection
public Iterator iterator()
iterator
in interface Iterable
iterator
in interface Collection
iterator
in interface Set
iterator
in class AbstractCollection
protected void reset()
protected void reset(int iLast)
iLast
- the index of the last address returned@Deprecated protected void configure(XmlElement xmlConfig)
xmlConfig
- the XML element that contains the configuration infoprotected List sortHolders(List list)
getNextAddress()
method. This implementation randomizes the holder list for simple load balancing.list
- the original list retrieved from the configurationpublic boolean equals(Object o)
Note: the general contract of hashCode and equals() should be preserved; AddressProviders which compare equals() should have the same hashCode.
equals
in interface SocketAddressProvider
equals
in interface Collection
equals
in interface Set
equals
in class AbstractSet
o
- the Object to compare this AddressProvider to for equalitypublic int hashCode()
hashCode
in interface SocketAddressProvider
hashCode
in interface Collection
hashCode
in interface Set
hashCode
in class AbstractSet
public String toString()
toString
in class AbstractCollection
public String[] getAddressDescriptions()
getAddressDescriptions
in interface DescribableAddressProvider
protected Iterator<InetSocketAddress> resolveAddress(String sHost, int nPort)
sHost
- the hostnPort
- the port