1#ifndef XRPL_APP_MISC_VALIDATORSITE_H_INCLUDED 
    2#define XRPL_APP_MISC_VALIDATORSITE_H_INCLUDED 
    4#include <xrpld/app/main/Application.h> 
    5#include <xrpld/app/misc/ValidatorList.h> 
    6#include <xrpld/app/misc/detail/Work.h> 
    8#include <xrpl/basics/Log.h> 
    9#include <xrpl/basics/StringUtilities.h> 
   10#include <xrpl/json/json_value.h> 
   12#include <boost/asio.hpp> 
  107    boost::asio::basic_waitable_timer<clock_type> 
timer_;
 
  203        boost::system::error_code 
const& ec,
 
  211        boost::system::error_code 
const& ec,
 
 
A generic endpoint for log messages.
 
void start()
Start fetching lists from sites.
 
std::condition_variable cv_
 
std::vector< Site > sites_
 
boost::asio::ip::tcp::endpoint endpoint_type
 
void stop()
Stop fetching lists from sites.
 
Json::Value getJson() const
Return JSON representation of configured validator sites.
 
bool load(std::vector< std::string > const &siteURIs)
Load configured site URIs.
 
void onTextFetch(boost::system::error_code const &ec, std::string const &res, std::size_t siteIdx)
Store latest list fetched from anywhere.
 
std::weak_ptr< detail::Work > work_
 
std::chrono::seconds const requestTimeout_
 
void setTimer(std::lock_guard< std::mutex > const &, std::lock_guard< std::mutex > const &)
Queue next site to be fetched lock over site_mutex_ and state_mutex_ required.
 
std::atomic< bool > stopping_
 
void join()
Wait for current fetches from sites to complete.
 
bool missingSite(std::lock_guard< std::mutex > const &)
If no sites are provided, or a site fails to load, get a list of local cache files from the Validator...
 
std::shared_ptr< Site::Resource > processRedirect(detail::response_type &res, std::size_t siteIdx, std::lock_guard< std::mutex > const &)
Interpret a redirect response.
 
void parseJsonResponse(std::string const &res, std::size_t siteIdx, std::lock_guard< std::mutex > const &)
Parse json response from validator list site.
 
void makeRequest(std::shared_ptr< Site::Resource > resource, std::size_t siteIdx, std::lock_guard< std::mutex > const &)
Initiate request to given resource.
 
void onRequestTimeout(std::size_t siteIdx, error_code const &ec)
request took too long
 
std::atomic< bool > pending_
 
boost::system::error_code error_code
 
boost::asio::basic_waitable_timer< clock_type > timer_
 
void onTimer(std::size_t siteIdx, error_code const &ec)
Fetch site whose time has come.
 
void onSiteFetch(boost::system::error_code const &ec, endpoint_type const &endpoint, detail::response_type &&res, std::size_t siteIdx)
Store latest list fetched from site.
 
std::atomic< bool > fetching_
 
boost::beast::http::response< boost::beast::http::string_body > response_type
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
clock_type::time_point refreshed
 
ListDisposition disposition
 
std::shared_ptr< Resource > loadedResource
the original uri as loaded from config
 
std::shared_ptr< Resource > startingResource
the resource to request at <timer> intervals.
 
bool lastRequestSuccessful
 
endpoint_type lastRequestEndpoint
 
std::chrono::minutes refreshInterval
 
unsigned short redirCount
 
std::shared_ptr< Resource > activeResource
the active resource being requested.
 
std::optional< Status > lastRefreshStatus
 
clock_type::time_point nextRefresh