3#include <xrpl/beast/net/IPAddressConversion.h>
4#include <xrpl/beast/net/IPEndpoint.h>
6#include <boost/asio/io_context.hpp>
7#include <boost/asio/ip/tcp.hpp>
8#include <boost/intrusive/list.hpp>
19template <
class Protocol = boost::asio::ip::tcp>
26 boost::intrusive::link_mode<boost::intrusive::normal_link>>
37 template <
class Handler>
64 boost::intrusive::make_list<BasicAsyncOp, boost::intrusive::constant_time_size<true>>::type;
73 explicit Checker(boost::asio::io_context& ioContext);
105 template <
class Handler>
116template <
class Protocol>
117template <
class Handler>
120 boost::asio::io_context& ioContext,
127template <
class Protocol>
128template <
class Handler>
136template <
class Protocol>
137template <
class Handler>
146template <
class Protocol>
151template <
class Protocol>
157template <
class Protocol>
165 for (
auto& c :
list_)
170template <
class Protocol>
175 while (!
list_.empty())
179template <
class Protocol>
180template <
class Handler>
188 list_.push_back(*op);
190 op->socket.async_connect(
195template <
class Protocol>
201 if (
list_.size() == 0)
A version-independent IP address and port combination.
std::condition_variable cond_
void stop()
Stop the service.
~Checker()
Destroy the service.
Checker(boost::asio::io_context &ioContext)
void asyncConnect(beast::ip::Endpoint const &endpoint, Handler &&handler)
Performs an async connection test on the specified endpoint.
void remove(BasicAsyncOp &op)
boost::asio::io_context & ioContext_
boost::system::error_code error_code
boost::intrusive::make_list< BasicAsyncOp, boost::intrusive::constant_time_size< true > >::type list_type
void wait()
Block until all pending I/O completes.
static boost::asio::ip::tcp::endpoint toAsioEndpoint(ip::Endpoint const &address)
AsyncOp(Checker &owner, boost::asio::io_context &ioContext, Handler &&handler)
Protocol::endpoint endpoint_type
Protocol::socket socket_type
void operator()(error_code const &ec) override
virtual void operator()(error_code const &ec)=0
virtual ~BasicAsyncOp()=default