|
reSIProcate/rutil
9694
|
#include <LocalDns.hxx>


Public Member Functions | |
| LocalDns () | |
| virtual | ~LocalDns () |
| virtual int | init () |
| virtual unsigned int | getTimeTillNextProcessMS () |
| virtual void | buildFdSet (fd_set &read, fd_set &write, int &size) |
| virtual void | process (fd_set &read, fd_set &write) |
| virtual void | freeResult (ExternalDnsRawResult) |
| virtual void | freeResult (ExternalDnsHostResult) |
| void | lookup (const char *target, unsigned short type, ExternalDnsHandler *handler, void *userData) |
| virtual void | lookupARecords (const char *target, ExternalDnsHandler *handler, void *userData) |
| virtual void | lookupAAAARecords (const char *target, ExternalDnsHandler *handler, void *userData) |
| virtual void | lookupNAPTR (const char *target, ExternalDnsHandler *handler, void *userData) |
| virtual void | lookupSRV (const char *target, ExternalDnsHandler *handler, void *userData) |
| virtual char * | errorMessage (long errorCode) |
Private Types | |
| typedef std::pair < ExternalDnsHandler *, void * > | Payload |
Static Private Member Functions | |
| static ExternalDnsRawResult | makeRawResult (void *arg, int status, unsigned char *abuf, int alen) |
| static ExternalDnsHandler * | getHandler (void *arg) |
| static void | localCallback (void *arg, int status, unsigned char *abuf, int alen) |
| static void | message (const char *file, unsigned char *buf, int &len) |
Private Attributes | |
| struct ares_channeldata * | mChannel |
Static Private Attributes | |
| static std::map< Data, Data > | files |
| static Data | mTarget |
Definition at line 16 of file LocalDns.hxx.
typedef std::pair<ExternalDnsHandler*, void*> resip::LocalDns::Payload [private] |
Definition at line 52 of file LocalDns.hxx.
| LocalDns::LocalDns | ( | ) |
| LocalDns::~LocalDns | ( | ) | [virtual] |
Definition at line 48 of file LocalDns.cxx.
{
}
| void LocalDns::buildFdSet | ( | fd_set & | read, |
| fd_set & | write, | ||
| int & | size | ||
| ) | [virtual] |
| virtual char* resip::LocalDns::errorMessage | ( | long | errorCode | ) | [inline, virtual] |
Implements resip::ExternalDns.
Definition at line 36 of file LocalDns.hxx.
{
const char* msg = "Local Dns";
int len = (int)strlen(msg);
char* errorString = new char[len+1];
strncpy(errorString, msg, len);
errorString[len] = '\0';
return errorString;
}
| virtual void resip::LocalDns::freeResult | ( | ExternalDnsRawResult | ) | [inline, virtual] |
| virtual void resip::LocalDns::freeResult | ( | ExternalDnsHostResult | ) | [inline, virtual] |
| ExternalDnsHandler * LocalDns::getHandler | ( | void * | arg | ) | [static, private] |
Definition at line 53 of file LocalDns.cxx.
{
Payload* p = reinterpret_cast<Payload*>(arg);
ExternalDnsHandler *thisp = reinterpret_cast<ExternalDnsHandler*>(p->first);
return thisp;
}
| unsigned int LocalDns::getTimeTillNextProcessMS | ( | ) | [virtual] |
| int LocalDns::init | ( | ) | [virtual] |
Definition at line 25 of file LocalDns.cxx.
{
int status;
if ((status = ares_init(&mChannel)) != ARES_SUCCESS)
{
return status;
}
else
{
return 0;
}
}
| void LocalDns::localCallback | ( | void * | arg, |
| int | status, | ||
| unsigned char * | abuf, | ||
| int | alen | ||
| ) | [static, private] |
Definition at line 122 of file LocalDns.cxx.
Referenced by lookup().
{
unsigned char msg[1024];
int len = 0;
map<Data, Data>::iterator it = files.find(mTarget);
assert(it != files.end());
message(it->second.c_str(), msg, len);
assert(0 != len);
getHandler(arg)->handleDnsRaw(makeRawResult(arg, 0, msg, len));
Payload* p = reinterpret_cast<Payload*>(arg);
delete p;
}
| void LocalDns::lookup | ( | const char * | target, |
| unsigned short | type, | ||
| ExternalDnsHandler * | handler, | ||
| void * | userData | ||
| ) | [virtual] |
Implements resip::ExternalDns.
Definition at line 93 of file LocalDns.cxx.
References localCallback().
{
mTarget = target;
ares_query(mChannel, target, C_IN, type, LocalDns::localCallback, new Payload(handler, userData));
}

| virtual void resip::LocalDns::lookupAAAARecords | ( | const char * | target, |
| ExternalDnsHandler * | handler, | ||
| void * | userData | ||
| ) | [inline, virtual] |
Definition at line 33 of file LocalDns.hxx.
{}
| virtual void resip::LocalDns::lookupARecords | ( | const char * | target, |
| ExternalDnsHandler * | handler, | ||
| void * | userData | ||
| ) | [inline, virtual] |
Definition at line 32 of file LocalDns.hxx.
{}
| virtual void resip::LocalDns::lookupNAPTR | ( | const char * | target, |
| ExternalDnsHandler * | handler, | ||
| void * | userData | ||
| ) | [inline, virtual] |
Definition at line 34 of file LocalDns.hxx.
{}
| virtual void resip::LocalDns::lookupSRV | ( | const char * | target, |
| ExternalDnsHandler * | handler, | ||
| void * | userData | ||
| ) | [inline, virtual] |
Definition at line 35 of file LocalDns.hxx.
{}
| ExternalDnsRawResult LocalDns::makeRawResult | ( | void * | arg, |
| int | status, | ||
| unsigned char * | abuf, | ||
| int | alen | ||
| ) | [static, private] |
Definition at line 61 of file LocalDns.cxx.
{
Payload* p = reinterpret_cast<Payload*>(arg);
void* userArg = reinterpret_cast<void*>(p->second);
if (status != ARES_SUCCESS)
{
return ExternalDnsRawResult(status, abuf, alen, userArg);
}
else
{
return ExternalDnsRawResult(abuf, alen, userArg);
}
}
| void LocalDns::message | ( | const char * | file, |
| unsigned char * | buf, | ||
| int & | len | ||
| ) | [static, private] |
Definition at line 99 of file LocalDns.cxx.
{
len = 0;
ifstream fs;
fs.open(file, ios_base::binary | ios_base::in);
assert(fs.is_open());
unsigned char* p = buf;
while (!fs.eof())
{
unsigned char c = fs.get();
if (c != char_traits<char>::eof())
{
*p++ = c;
len++;
}
}
fs.close();
}
| void LocalDns::process | ( | fd_set & | read, |
| fd_set & | write | ||
| ) | [virtual] |
std::map< Data, Data > LocalDns::files [static, private] |
Definition at line 59 of file LocalDns.hxx.
struct ares_channeldata* resip::LocalDns::mChannel [private] |
Definition at line 50 of file LocalDns.hxx.
Data LocalDns::mTarget [static, private] |
Definition at line 60 of file LocalDns.hxx.
1.7.5.1