#include <coherence/net/ConfigurableAddressProvider.hpp>
Inherits Object, and AddressProvider.
<socket-address> <address>...</address> <port>...</port> </socket-address>The order of items in the configured list will be randomized to provide basic load balancing. This implementation is not thread safe.
Public Types | ||||
typedef spec::Handle | Handle | |||
ConfigurableAddressProvider Handle definition. | ||||
typedef spec::View | View | |||
ConfigurableAddressProvider View definition. | ||||
typedef spec::Holder | Holder | |||
ConfigurableAddressProvider Holder definition. | ||||
Public Member Functions | ||||
virtual InetSocketAddress::View | getNextAddress () | |||
Obtain a next available address to use. If the caller can successfully use the returned address (e.g. a connection was established), it should call the AddressProvider's accept()
| ||||
virtual void | accept () | |||
This method should be called by the client immediately after it determines that it can successfully use an address returned by the getNextAddress method. | ||||
virtual void | reject (Exception::Holder oheCause) | |||
This method should be called by the client immediately after it determines that an attempt to use an address returned by the getNextAddress method has failed.
| ||||
virtual TypedHandle < const String > | toString () const | |||
Output a human-readable description of this Object to the given stream. Note that when overriding this method the return type must be TypedHandle<const String> rather then String::View. These two types are assignment compatible but not equivalent and declaring the override with String::View will not be a compatible override. coherence::lang::operator<<(std::ostream, Object::View) is defined and will call into the toString method, to output Objects. If a managed String object is desired, the COH_TO_STRING macro can be used to build up a String from streamable contents and is generally how toString() will be implemented.
Object::View vKey = ... Object::View vValue = ... std::cout << vKey << " = " << vValue << std::endl; String::View vs = COH_TO_STRING(vKey << " = " << vValue); The COH_TO_STRING macro is also the most common way to implement the toString method. For example:
virtual TypedHandle<const String> Person::toString() const { return COH_TO_STRING("Name: " << f_sName << " SSN: " << f_nSSN); }
| ||||
Static Public Attributes | ||||
static const size32_t | npos | |||
The largest possible value of type size32_t. | ||||
Protected Member Functions | ||||
ConfigurableAddressProvider () | ||||
Create a new ConfigurableAddressProvider instance. | ||||
ConfigurableAddressProvider (XmlElement::View vXml, bool fSafe=true) | ||||
Construct an instance of ConfigurableAddressProvider based on the specified XML element. | ||||
virtual void | configure (XmlElement::View vXml) | |||
Configure this ConfigurableAddressProvider based on the specified XML. | ||||
virtual void | reset () | |||
Make all addresses iterable, starting at the first address. | ||||
virtual void | reset (size32_t iLast) | |||
Make all addresses iterable, starting at the index after the specified one. | ||||
virtual Iterator::Handle | resolveAddress (String::View vsHost, int nPort) const | |||
Resolve an address and port. | ||||
virtual List::Handle | sortHolders (List::Handle hList) | |||
Sort the holders in the order to be returned by the getNextAddress method. | ||||
Protected Attributes | ||||
FinalView< List > | f_vListHolders | |||
A list of AddressHolder objects. | ||||
MemberHandle< Iterator > | m_hIterAddr | |||
An address iterator for the previously resolved address. | ||||
size32_t | m_iLast | |||
Index of the last returned address. | ||||
bool | m_fSafe | |||
Specifies if the provider is only to return resolved addresses. | ||||
Classes | ||||
class | AddressHolder | |||
A stateful holder for an InetSocketAddress object. More... |
ConfigurableAddressProvider | ( | XmlElement::View | vXml, | |
bool | fSafe = true | |||
) | [protected] |
Construct an instance of ConfigurableAddressProvider based on the specified XML element.
vXml | the XML element that contains the configuration info | |
fSafe | true if the provider is skips unresolved addresses |
virtual void configure | ( | XmlElement::View | vXml | ) | [protected, virtual] |
Configure this ConfigurableAddressProvider based on the specified XML.
xmlConfig | the XML element that contains the configuration info |
virtual void reset | ( | size32_t | iLast | ) | [protected, virtual] |
Make all addresses iterable, starting at the index after the specified one.
iLast | the index of the last address returned |
virtual Iterator::Handle resolveAddress | ( | String::View | vsHost, | |
int | nPort | |||
) | const [protected, virtual] |
Resolve an address and port.
vsHost | the host | |
nPort | the port |
virtual List::Handle sortHolders | ( | List::Handle | hList | ) | [protected, virtual] |
Sort the holders in the order to be returned by the getNextAddress method.
This implementation randomizes the holder lists for simple load balancing.
list | the original list retrieved from the configuration |
MemberHandle<Iterator> m_hIterAddr [protected] |
An address iterator for the previously resolved address.