OSUtils::resolve()

This commit is contained in:
Adam Ierymenko 2015-04-20 16:07:38 -07:00
parent 69076f8a45
commit 86c87875a7
3 changed files with 54 additions and 1 deletions

View file

@ -38,9 +38,11 @@
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <dirent.h>
#include <netdb.h>
#endif
#ifdef __WINDOWS__
@ -174,6 +176,34 @@ int64_t OSUtils::getFileSize(const char *path)
return -1;
}
std::vector<InetAddress> OSUtils::resolve(const char *name)
{
std::vector<InetAddress> r;
std::vector<InetAddress>::iterator i;
InetAddress tmp;
struct addrinfo *ai = (struct addrinfo *)0,*p;
if (!getaddrinfo(name,(const char *)0,(const struct addrinfo *)0,&ai)) {
try {
p = ai;
while (p) {
if ((p->ai_addr)&&((p->ai_addr->sa_family == AF_INET)||(p->ai_addr->sa_family == AF_INET6))) {
tmp = *(p->ai_addr);
for(i=r.begin();i!=r.end();++i) {
if (i->ipsEqual(tmp))
goto skip_add_inetaddr;
}
r.push_back(tmp);
}
skip_add_inetaddr:
p = p->ai_next;
}
} catch ( ... ) {}
freeaddrinfo(ai);
}
std::sort(r.begin(),r.end());
return r;
}
bool OSUtils::readFile(const char *path,std::string &buf)
{
char tmp[4096];