xrpld
Loading...
Searching...
No Matches
xrpl::ResolverAsioImpl Class Reference
Inheritance diagram for xrpl::ResolverAsioImpl:
Collaboration diagram for xrpl::ResolverAsioImpl:

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_context &ioContext, beast::Journal journal)
 ~ResolverAsioImpl () override
void asyncHandlersComplete ()
void start () override
 Issue a synchronous start request.
void stopAsync () override
 Issue an asynchronous stop request.
void stop () override
 Issue a synchronous stop request.
void resolve (std::vector< std::string > const &names, HandlerType const &handler) override
void doStop (CompletionCounter)
void doFinish (std::string name, boost::system::error_code const &ec, HandlerType handler, boost::asio::ip::tcp::resolver::results_type results, CompletionCounter)
void doWork (CompletionCounter)
void doResolve (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

Static Public Member Functions

static HostAndPort parseName (std::string const &str)
static std::unique_ptr< ResolverAsiomake (boost::asio::io_context &, beast::Journal)

Public Attributes

beast::Journal journal
boost::asio::io_context & ioContext
boost::asio::strand< boost::asio::io_context::executor_type > strand
boost::asio::ip::tcp::resolver resolver
std::condition_variable cv
std::mutex mut
bool asyncHandlersCompleted {true}
std::atomic< bool > stopCalled
std::atomic< bool > stopped
std::deque< Workwork

Private Attributes

std::atomic< int > pending_
friend Derived

Detailed Description

Definition at line 104 of file ResolverAsio.cpp.

Member Typedef Documentation

◆ HostAndPort

◆ HandlerType

Definition at line 13 of file Resolver.h.

Constructor & Destructor Documentation

◆ ResolverAsioImpl()

xrpl::ResolverAsioImpl::ResolverAsioImpl ( boost::asio::io_context & ioContext,
beast::Journal journal )

Definition at line 139 of file ResolverAsio.cpp.

◆ ~ResolverAsioImpl()

xrpl::ResolverAsioImpl::~ResolverAsioImpl ( )
override

Definition at line 149 of file ResolverAsio.cpp.

Member Function Documentation

◆ asyncHandlersComplete()

void xrpl::ResolverAsioImpl::asyncHandlersComplete ( )

Definition at line 158 of file ResolverAsio.cpp.

◆ start()

void xrpl::ResolverAsioImpl::start ( )
overridevirtual

Issue a synchronous start request.

Implements xrpl::Resolver.

Definition at line 172 of file ResolverAsio.cpp.

◆ stopAsync()

void xrpl::ResolverAsioImpl::stopAsync ( )
overridevirtual

Issue an asynchronous stop request.

Implements xrpl::Resolver.

Definition at line 188 of file ResolverAsio.cpp.

◆ stop()

void xrpl::ResolverAsioImpl::stop ( )
overridevirtual

Issue a synchronous stop request.

Implements xrpl::Resolver.

Definition at line 202 of file ResolverAsio.cpp.

◆ resolve() [1/2]

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

Implements xrpl::Resolver.

Definition at line 214 of file ResolverAsio.cpp.

◆ doStop()

void xrpl::ResolverAsioImpl::doStop ( CompletionCounter )

Definition at line 232 of file ResolverAsio.cpp.

◆ doFinish()

void xrpl::ResolverAsioImpl::doFinish ( std::string name,
boost::system::error_code const & ec,
HandlerType handler,
boost::asio::ip::tcp::resolver::results_type results,
CompletionCounter  )

Definition at line 246 of file ResolverAsio.cpp.

◆ parseName()

HostAndPort xrpl::ResolverAsioImpl::parseName ( std::string const & str)
static

Definition at line 279 of file ResolverAsio.cpp.

◆ doWork()

void xrpl::ResolverAsioImpl::doWork ( CompletionCounter )

Definition at line 325 of file ResolverAsio.cpp.

◆ doResolve()

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

Definition at line 370 of file ResolverAsio.cpp.

◆ make()

std::unique_ptr< ResolverAsio > xrpl::ResolverAsio::make ( boost::asio::io_context & ioContext,
beast::Journal journal )
staticinherited

Definition at line 396 of file ResolverAsio.cpp.

◆ resolve() [2/2]

template<class Handler>
void xrpl::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 36 of file Resolver.h.

◆ addReference()

void xrpl::AsyncObject< ResolverAsioImpl >::addReference ( )
inherited

Definition at line 85 of file ResolverAsio.cpp.

◆ removeReference()

void xrpl::AsyncObject< ResolverAsioImpl >::removeReference ( )
inherited

Definition at line 91 of file ResolverAsio.cpp.

Member Data Documentation

◆ journal

beast::Journal xrpl::ResolverAsioImpl::journal

Definition at line 109 of file ResolverAsio.cpp.

◆ ioContext

boost::asio::io_context& xrpl::ResolverAsioImpl::ioContext

Definition at line 111 of file ResolverAsio.cpp.

◆ strand

boost::asio::strand<boost::asio::io_context::executor_type> xrpl::ResolverAsioImpl::strand

Definition at line 112 of file ResolverAsio.cpp.

◆ resolver

boost::asio::ip::tcp::resolver xrpl::ResolverAsioImpl::resolver

Definition at line 113 of file ResolverAsio.cpp.

◆ cv

std::condition_variable xrpl::ResolverAsioImpl::cv

Definition at line 115 of file ResolverAsio.cpp.

◆ mut

std::mutex xrpl::ResolverAsioImpl::mut

Definition at line 116 of file ResolverAsio.cpp.

◆ asyncHandlersCompleted

bool xrpl::ResolverAsioImpl::asyncHandlersCompleted {true}

Definition at line 117 of file ResolverAsio.cpp.

◆ stopCalled

std::atomic<bool> xrpl::ResolverAsioImpl::stopCalled

Definition at line 119 of file ResolverAsio.cpp.

◆ stopped

std::atomic<bool> xrpl::ResolverAsioImpl::stopped

Definition at line 120 of file ResolverAsio.cpp.

◆ work

std::deque<Work> xrpl::ResolverAsioImpl::work

Definition at line 137 of file ResolverAsio.cpp.

◆ pending_

std::atomic<int> xrpl::AsyncObject< ResolverAsioImpl >::pending_
privateinherited

Definition at line 99 of file ResolverAsio.cpp.

◆ Derived

Definition at line 101 of file ResolverAsio.cpp.