On 06/19/2011 05:19 AM, Amos Jeffries wrote:
Comm no longer contains implicit DNS resolution. It needs to be given
the remote IP address before opening.
Why?
Looks that the best (and easier) way to solve the problem is to handle
it in Comm::ConnOpener.
A DNS lookup to get the ip address to connect to, looks like a job of
the Comm::ConnOpener ...
Since ServiceRep::getConnection() is strictly synchronous and assumes
that there is only one IP for the service.
Xaction::openConnection() can become async so now contains:
"TODO: find the IPs and attempt each one if this is a named service"
marks the spot.
For now it converts IP-addressed services using raw-IP text conversion
"remote= s.cfg().host.termedBuf()". Which is synchronous and
non-blocking but not resolving FQDN.
When FQDN resolution is required do we ...
a) split openConnection() into two async steps and only use one of the
possibly multiple IPs returned?
OR
b) lookup the DNS at some far earlier point and store the IPA in
ServiceRep for some sort of load balancing selection of just one by
getConnection()?
Amos