#include <iostream>
 
 
class MyClass : public sigc::trackable
{
  public:
    MyClass(void)
    {
      dns.resultsReady.connect(mem_fun(*this, &MyClass::onResultsReady));
 
      dns.lookup("www.svxlink.org");
      
      
      
      
 
      
      
      
      
 
      std::cout << "Starting " << dns.typeStr() << " record query for \""
                << dns.label() << "\"..." << std::endl;
    }
 
    {
      {
          
        std::cout << "IP addresses received:\n";
        {
          std::cout << addr << std::endl;
        }
        std::cout << std::endl;
 
          
        std::cout << "All resource records received:\n";
        {
          std::cout << rr->toString() << std::endl;
        }
        std::cout << std::endl;
 
          
        if (!a_rrs.empty())
        {
          std::cout << "A records received:\n";
          for (auto& rr : a_rrs)
          {
            std::cout << rr->name() << "\t" << rr->ttl() << "\t" << rr->ip()
                      << std::endl;
          }
          std::cout << std::endl;
        }
 
          
        if (!ptr_rrs.empty())
        {
          std::cout << "PTR records received:\n";
          for (auto& rr : ptr_rrs)
          {
            std::cout << rr->name() << "\t" << rr->ttl() << "\t" << rr->dname()
                      << std::endl;
          }
          std::cout << std::endl;
        }
 
          
        if (!cname_rrs.empty())
        {
          std::cout << "CNAME records received:\n";
          for (auto& rr : cname_rrs)
          {
            std::cout << rr->name() << "\t" << rr->ttl() << "\t" << rr->cname()
                      << std::endl;
          }
          std::cout << std::endl;
        }
 
          
        if (!srv_rrs.empty())
        {
          std::cout << "SRV records received:\n";
          for (auto& rr : srv_rrs)
          {
            std::cout << rr->name() << "\t" << rr->ttl() << "\t" << rr->prio()
                      << " " << rr->weight() << " " << rr->port() << " "
                      << rr->target() << std::endl;
          }
        }
      }
      else
      {
        std::cout << 
"*** ERROR: The " << dns.
typeStr()
                  << 
" record DNS lookup for " << dns.
label()
                  << " failed" << std::endl;
      }
 
      Application::app().quit();
    }
 
  private:
};
 
int main(int argc, char **argv)
{
  MyClass dns;
}
The core class for writing asyncronous cpp applications.
Contains a class for executing DNS queries.
An application class for writing non GUI applications.
void exec(void)
Execute the application main loop.
A class for performing asynchronous DNS lookups.
DnsResourceRecord::List resourceRecords(Type type=Type::ANY) const
Return all matching resource records.
const std::string & label(void) const
Return the associated label.
std::string typeStr(void) const
Return the type of lookup as a string.
bool lookupFailed(void) const
Check if the lookup failed.
std::vector< IpAddress > addresses(void)
Return the addresses for the host in the query.
std::vector< std::unique_ptr< DnsResourceRecord > > List
The type for a list of resource records.
Namespace for the asynchronous programming classes.