rippled
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | List of all members
ripple::ResolverAsioImpl Class Reference
Inheritance diagram for ripple::ResolverAsioImpl:
Inheritance graph
[legend]
Collaboration diagram for ripple::ResolverAsioImpl:
Collaboration graph
[legend]

Classes

struct  Work
 

Public Types

using HostAndPort = std::pair< std::string, std::string >
 
using HandlerType = std::function< void(std::string, std::vector< beast::IP::Endpoint >)>
 

Public Member Functions

 ResolverAsioImpl (boost::asio::io_service &io_service, beast::Journal journal)
 
 ~ResolverAsioImpl () override
 
void asyncHandlersComplete ()
 
void start () override
 Issue a synchronous start request. More...
 
void stop_async () override
 Issue an asynchronous stop request. More...
 
void stop () override
 Issue a synchronous stop request. More...
 
void resolve (std::vector< std::string > const &names, HandlerType const &handler) override
 
void do_stop (CompletionCounter)
 
void do_finish (std::string name, boost::system::error_code const &ec, HandlerType handler, boost::asio::ip::tcp::resolver::iterator iter, CompletionCounter)
 
HostAndPort parseName (std::string const &str)
 
void do_work (CompletionCounter)
 
void do_resolve (std::vector< std::string > const &names, HandlerType const &handler, CompletionCounter)
 
void addReference ()
 
void removeReference ()
 
template<class Handler >
void resolve (std::vector< std::string > const &names, Handler handler)
 resolve all hostnames on the list More...
 

Static Public Member Functions

static std::unique_ptr< ResolverAsioNew (boost::asio::io_service &, beast::Journal)
 

Public Attributes

beast::Journal m_journal
 
boost::asio::io_service & m_io_service
 
boost::asio::io_service::strand m_strand
 
boost::asio::ip::tcp::resolver m_resolver
 
std::condition_variable m_cv
 
std::mutex m_mut
 
bool m_asyncHandlersCompleted
 
std::atomic< bool > m_stop_called
 
std::atomic< bool > m_stopped
 
std::deque< Workm_work
 

Private Attributes

std::atomic< int > m_pending
 

Detailed Description

Definition at line 103 of file ResolverAsio.cpp.

Member Typedef Documentation

◆ HostAndPort

Definition at line 107 of file ResolverAsio.cpp.

◆ HandlerType

Definition at line 34 of file Resolver.h.

Constructor & Destructor Documentation

◆ ResolverAsioImpl()

ripple::ResolverAsioImpl::ResolverAsioImpl ( boost::asio::io_service &  io_service,
beast::Journal  journal 
)

Definition at line 141 of file ResolverAsio.cpp.

◆ ~ResolverAsioImpl()

ripple::ResolverAsioImpl::~ResolverAsioImpl ( )
override

Definition at line 154 of file ResolverAsio.cpp.

Member Function Documentation

◆ asyncHandlersComplete()

void ripple::ResolverAsioImpl::asyncHandlersComplete ( )

Definition at line 163 of file ResolverAsio.cpp.

◆ start()

void ripple::ResolverAsioImpl::start ( )
overridevirtual

Issue a synchronous start request.

Implements ripple::Resolver.

Definition at line 177 of file ResolverAsio.cpp.

◆ stop_async()

void ripple::ResolverAsioImpl::stop_async ( )
overridevirtual

Issue an asynchronous stop request.

Implements ripple::Resolver.

Definition at line 193 of file ResolverAsio.cpp.

◆ stop()

void ripple::ResolverAsioImpl::stop ( )
overridevirtual

Issue a synchronous stop request.

Implements ripple::Resolver.

Definition at line 205 of file ResolverAsio.cpp.

◆ resolve() [1/2]

void ripple::ResolverAsioImpl::resolve ( std::vector< std::string > const &  names,
HandlerType const &  handler 
)
overridevirtual

Implements ripple::Resolver.

Definition at line 217 of file ResolverAsio.cpp.

◆ do_stop()

void ripple::ResolverAsioImpl::do_stop ( CompletionCounter  )

Definition at line 235 of file ResolverAsio.cpp.

◆ do_finish()

void ripple::ResolverAsioImpl::do_finish ( std::string  name,
boost::system::error_code const &  ec,
HandlerType  handler,
boost::asio::ip::tcp::resolver::iterator  iter,
CompletionCounter   
)

Definition at line 249 of file ResolverAsio.cpp.

◆ parseName()

HostAndPort ripple::ResolverAsioImpl::parseName ( std::string const &  str)

Definition at line 280 of file ResolverAsio.cpp.

◆ do_work()

void ripple::ResolverAsioImpl::do_work ( CompletionCounter  )

Definition at line 333 of file ResolverAsio.cpp.

◆ do_resolve()

void ripple::ResolverAsioImpl::do_resolve ( std::vector< std::string > const &  names,
HandlerType const &  handler,
CompletionCounter   
)

Definition at line 377 of file ResolverAsio.cpp.

◆ New()

std::unique_ptr< ResolverAsio > ripple::ResolverAsio::New ( boost::asio::io_service &  io_service,
beast::Journal  journal 
)
staticinherited

Definition at line 406 of file ResolverAsio.cpp.

◆ resolve() [2/2]

template<class Handler >
void ripple::Resolver::resolve ( std::vector< std::string > const &  names,
Handler  handler 
)
inherited

resolve all hostnames on the list

Parameters
namesthe names to be resolved
handlerthe handler to call

Definition at line 57 of file Resolver.h.

◆ addReference()

void ripple::AsyncObject< ResolverAsioImpl >::addReference
inherited

Definition at line 86 of file ResolverAsio.cpp.

◆ removeReference()

void ripple::AsyncObject< ResolverAsioImpl >::removeReference
inherited

Definition at line 92 of file ResolverAsio.cpp.

Member Data Documentation

◆ m_journal

beast::Journal ripple::ResolverAsioImpl::m_journal

Definition at line 109 of file ResolverAsio.cpp.

◆ m_io_service

boost::asio::io_service& ripple::ResolverAsioImpl::m_io_service

Definition at line 111 of file ResolverAsio.cpp.

◆ m_strand

boost::asio::io_service::strand ripple::ResolverAsioImpl::m_strand

Definition at line 112 of file ResolverAsio.cpp.

◆ m_resolver

boost::asio::ip::tcp::resolver ripple::ResolverAsioImpl::m_resolver

Definition at line 113 of file ResolverAsio.cpp.

◆ m_cv

std::condition_variable ripple::ResolverAsioImpl::m_cv

Definition at line 115 of file ResolverAsio.cpp.

◆ m_mut

std::mutex ripple::ResolverAsioImpl::m_mut

Definition at line 116 of file ResolverAsio.cpp.

◆ m_asyncHandlersCompleted

bool ripple::ResolverAsioImpl::m_asyncHandlersCompleted

Definition at line 117 of file ResolverAsio.cpp.

◆ m_stop_called

std::atomic<bool> ripple::ResolverAsioImpl::m_stop_called

Definition at line 119 of file ResolverAsio.cpp.

◆ m_stopped

std::atomic<bool> ripple::ResolverAsioImpl::m_stopped

Definition at line 120 of file ResolverAsio.cpp.

◆ m_work

std::deque<Work> ripple::ResolverAsioImpl::m_work

Definition at line 139 of file ResolverAsio.cpp.

◆ m_pending

std::atomic<int> ripple::AsyncObject< ResolverAsioImpl >::m_pending
privateinherited

Definition at line 100 of file ResolverAsio.cpp.