1#ifndef BEAST_ASIO_IO_LATENCY_PROBE_H_INCLUDED 
    2#define BEAST_ASIO_IO_LATENCY_PROBE_H_INCLUDED 
    4#include <xrpl/beast/utility/instrumentation.h> 
    6#include <boost/asio/basic_waitable_timer.hpp> 
    7#include <boost/asio/io_context.hpp> 
    8#include <boost/asio/post.hpp> 
   30    boost::asio::basic_waitable_timer<std::chrono::steady_clock> 
m_timer;
 
   51    boost::asio::io_context&
 
   57    boost::asio::io_context 
const&
 
   87    template <
class Handler>
 
  104    template <
class Handler>
 
  128            m_cond.
wait(lock, [
this] { 
return this->m_count == 0; });
 
 
  146    template <
class Handler>
 
  155            Handler 
const& handler,
 
  166                "beast::io_latency_probe::sample_op::sample_op : non-null " 
 
  179                "beast::io_latency_probe::sample_op::sample_op(sample_op&&) : " 
  180                "non-null probe input");
 
  181            from.m_probe = 
nullptr;
 
 
  201            typename Clock::time_point 
const now(Clock::now());
 
  202            typename Clock::duration 
const elapsed(now - 
m_start);
 
  217                typename Clock::time_point 
const when(
 
 
  243            typename Clock::time_point 
const now(Clock::now());
 
 
 
 
Measures handler latency on an io_context queue.
 
void sample(Handler &&handler)
Initiate continuous i/o latency sampling.
 
std::recursive_mutex m_mutex
 
boost::asio::basic_waitable_timer< std::chrono::steady_clock > m_timer
 
void cancel()
Cancel all pending i/o.
 
boost::asio::io_context const & get_io_context() const
 
void sample_one(Handler &&handler)
Measure one sample of i/o latency.
 
typename Clock::duration duration
 
boost::asio::io_context & get_io_context()
Return the io_context associated with the latency probe.
 
boost::asio::io_context & m_ios
 
void cancel(std::unique_lock< decltype(m_mutex)> &lock, bool wait)
 
std::condition_variable_any m_cond
 
io_latency_probe(duration const &period, boost::asio::io_context &ios)
 
typename Clock::time_point time_point
 
sample_op(Handler const &handler, time_point const &start, bool repeat, io_latency_probe *probe)
 
sample_op operator=(sample_op const &)=delete
 
sample_op & operator=(sample_op &&)=delete
 
sample_op(sample_op &&from) noexcept
 
io_latency_probe * m_probe
 
void operator()(boost::system::error_code const &ec)
 
sample_op(sample_op const &)=delete