E-MailRelay
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
GNet::Resolver Class Reference

A class for synchronous or asynchronous network name to address resolution. More...

#include <gresolver.h>

Classes

struct  Callback
 An interface used for GNet::Resolver callbacks. More...
 

Public Types

using AddressList = std::vector< Address >
 

Public Member Functions

 Resolver (Callback &, ExceptionSink)
 Constructor taking a callback interface reference. More...
 
 ~Resolver ()
 Destructor. More...
 
void start (const Location &)
 Starts asynchronous name-to-address resolution. More...
 
bool busy () const
 Returns true if there is a pending resolve request. More...
 
 Resolver (const Resolver &)=delete
 
 Resolver (Resolver &&)=delete
 
void operator= (const Resolver &)=delete
 
void operator= (Resolver &&)=delete
 

Static Public Member Functions

static std::string resolve (Location &)
 Does synchronous name resolution. More...
 
static AddressList resolve (const std::string &host, const std::string &service, int family=AF_UNSPEC, bool dgram=false)
 Does synchronous name resolution returning a list of addresses. More...
 
static bool async ()
 Returns true if the resolver supports asynchronous operation. More...
 

Friends

class GNet::ResolverImp
 

Detailed Description

A class for synchronous or asynchronous network name to address resolution.

The implementation uses getaddrinfo() at its core, with std::thread used for asynchronous resolve requests, with hooks into the GNet::EventLoop via GNet::FutureEvent.

Definition at line 43 of file gresolver.h.

Member Typedef Documentation

◆ AddressList

using GNet::Resolver::AddressList = std::vector<Address>

Definition at line 46 of file gresolver.h.

Constructor & Destructor Documentation

◆ Resolver()

GNet::Resolver::Resolver ( Resolver::Callback callback,
ExceptionSink  es 
)

Constructor taking a callback interface reference.

The exception sink is called if an exception is thrown out of Callback::onResolved().

Definition at line 174 of file gresolver.cpp.

◆ ~Resolver()

GNet::Resolver::~Resolver ( )

Destructor.

The results of any pending asynchronous resolve request are discarded asynchronously, although in extreme cases this destructor may block doing a thread join.

Definition at line 181 of file gresolver.cpp.

Member Function Documentation

◆ async()

bool GNet::Resolver::async ( )
static

Returns true if the resolver supports asynchronous operation.

If it doesnt then start() will always throw.

Definition at line 255 of file gresolver.cpp.

◆ busy()

bool GNet::Resolver::busy ( ) const

Returns true if there is a pending resolve request.

Definition at line 250 of file gresolver.cpp.

◆ resolve() [1/2]

GNet::Resolver::AddressList GNet::Resolver::resolve ( const std::string &  host,
const std::string &  service,
int  family = AF_UNSPEC,
bool  dgram = false 
)
static

Does synchronous name resolution returning a list of addresses.

Errors are not reported. The empty list is returned on error.

Definition at line 217 of file gresolver.cpp.

◆ resolve() [2/2]

std::string GNet::Resolver::resolve ( Location location)
static

Does synchronous name resolution.

Fills in the name and address fields of the supplied Location structure. The returned error string is zero length on success.

Definition at line 194 of file gresolver.cpp.

◆ start()

void GNet::Resolver::start ( const Location location)

Starts asynchronous name-to-address resolution.

Precondition: async() && !busy()

Definition at line 231 of file gresolver.cpp.

Friends And Related Function Documentation

◆ GNet::ResolverImp

friend class GNet::ResolverImp
friend

Definition at line 96 of file gresolver.h.


The documentation for this class was generated from the following files: