+// ***************************************************************************
+// HostInfo_p.cpp (c) 2011 Derek Barnett
+// Marth Lab, Department of Biology, Boston College
+// ---------------------------------------------------------------------------
+// Last modified: 8 December 2011 (DB)
+// ---------------------------------------------------------------------------
+// Provides DNS lookup functionality for hostname & its discovered addresses
+// ***************************************************************************
+
#include "api/internal/io/HostInfo_p.h"
using namespace BamTools;
using namespace BamTools::Internal;
# include "api/internal/io/NetUnix_p.h"
#endif
-#include <iostream> // debug
-
// standard C++ includes
#include <cstdlib>
#include <cstring>
using namespace std;
// -------------------------
-// HostInfo basics
+// HostInfo implementation
// -------------------------
HostInfo::HostInfo(void)
m_hostName = name;
}
-// ------------------------------
+// ---------------------------------
// HostInfo::Lookup(host, port)
-// ------------------------------
+// - the real "heavy-lifter" here
+// ---------------------------------
HostInfo HostInfo::Lookup(const string& hostname, const string& port) {
HostInfo result;
+ result.SetHostName(hostname);
set<HostAddress> uniqueAddresses;
#ifdef _WIN32
// do 'normal' lookup
else {
- cout << "HostInfo::Lookup() - looking up addresses for domain name: " << hostname << endl;
-
// setup address lookup 'hints'
addrinfo hints;
memset(&hints, 0, sizeof(hints));
// if everything OK
if ( status == 0 ) {
- cout << "HostInfo::Lookup() - found addresses" << endl;
-
// iterate over all IP addresses found
addrinfo* p = res;
for ( ; p != NULL; p = p->ai_next ) {
if ( p->ai_family == AF_INET ) {
sockaddr_in* ipv4 = (sockaddr_in*)p->ai_addr;
HostAddress a( ntohl(ipv4->sin_addr.s_addr) );
- cout << "\t" << a.GetIPString() << endl;
uniqueAddresses.insert(a);
}
else if ( p->ai_family == AF_INET6 ) {
sockaddr_in6* ipv6 = (sockaddr_in6*)p->ai_addr;
HostAddress a(ipv6->sin6_addr.s6_addr);
- cout << "\t" << a.GetIPString() << endl;
uniqueAddresses.insert(a);
}
}