rippled
|
Classes | |
struct | Site |
Public Member Functions | |
ValidatorSite (Application &app, std::optional< beast::Journal > j=std::nullopt, std::chrono::seconds timeout=std::chrono::seconds{20}) | |
~ValidatorSite () | |
bool | load (std::vector< std::string > const &siteURIs) |
Load configured site URIs. More... | |
void | start () |
Start fetching lists from sites. More... | |
void | join () |
Wait for current fetches from sites to complete. More... | |
void | stop () |
Stop fetching lists from sites. More... | |
Json::Value | getJson () const |
Return JSON representation of configured validator sites. More... | |
Private Types | |
using | error_code = boost::system::error_code |
using | clock_type = std::chrono::system_clock |
using | endpoint_type = boost::asio::ip::tcp::endpoint |
Private Member Functions | |
bool | load (std::vector< std::string > const &siteURIs, std::lock_guard< std::mutex > const &) |
Load configured site URIs. More... | |
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. More... | |
void | onRequestTimeout (std::size_t siteIdx, error_code const &ec) |
request took too long More... | |
void | onTimer (std::size_t siteIdx, error_code const &ec) |
Fetch site whose time has come. More... | |
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. More... | |
void | onTextFetch (boost::system::error_code const &ec, std::string const &res, std::size_t siteIdx) |
Store latest list fetched from anywhere. More... | |
void | makeRequest (std::shared_ptr< Site::Resource > resource, std::size_t siteIdx, std::lock_guard< std::mutex > const &) |
Initiate request to given resource. More... | |
void | parseJsonResponse (std::string const &res, std::size_t siteIdx, std::lock_guard< std::mutex > const &) |
Parse json response from validator list site. More... | |
std::shared_ptr< Site::Resource > | processRedirect (detail::response_type &res, std::size_t siteIdx, std::lock_guard< std::mutex > const &) |
Interpret a redirect response. More... | |
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 ValidatorList. More... | |
Private Attributes | |
Application & | app_ |
const beast::Journal | j_ |
std::mutex | sites_mutex_ |
std::mutex | state_mutex_ |
std::condition_variable | cv_ |
std::weak_ptr< detail::Work > | work_ |
boost::asio::basic_waitable_timer< clock_type > | timer_ |
std::atomic< bool > | fetching_ |
std::atomic< bool > | pending_ |
std::atomic< bool > | stopping_ |
std::vector< Site > | sites_ |
const std::chrono::seconds | requestTimeout_ |
Friends | |
class | Work |
This class manages the set of configured remote sites used to fetch the latest published recommended validator lists.
Lists are fetched at a regular interval. Fetched lists are expected to be in JSON format and contain the following fields:
"blob"
: Base64-encoded JSON string containing a "sequence"
, "validUntil"
, and "validators"
field. "validUntil"
contains the Ripple timestamp (seconds since January 1st, 2000 (00:00 UTC)) for when the list expires. "validators"
contains an array of objects with a "validation_public_key"
and optional "manifest"
field. "validation_public_key"
should be the hex-encoded master public key. "manifest"
should be the base64-encoded validator manifest."manifest"
: Base64-encoded serialization of a manifest containing the publisher's master and signing public keys."signature"
: Hex-encoded signature of the blob using the publisher's signing key."version"
: 1"refreshInterval"
(optional, integer minutes). This value is clamped internally to [1,1440] (1 min - 1 day) Definition at line 69 of file ValidatorSite.h.
|
private |
Definition at line 74 of file ValidatorSite.h.
|
private |
Definition at line 75 of file ValidatorSite.h.
|
private |
Definition at line 76 of file ValidatorSite.h.
ripple::ValidatorSite::ValidatorSite | ( | Application & | app, |
std::optional< beast::Journal > | j = std::nullopt , |
||
std::chrono::seconds | timeout = std::chrono::seconds{20} |
||
) |
Definition at line 88 of file ValidatorSite.cpp.
ripple::ValidatorSite::~ValidatorSite | ( | ) |
Definition at line 102 of file ValidatorSite.cpp.
bool ripple::ValidatorSite::load | ( | std::vector< std::string > const & | siteURIs | ) |
Load configured site URIs.
siteURIs | List of URIs to fetch published validator lists |
May be called concurrently
false
if an entry is invalid or unparsable Definition at line 127 of file ValidatorSite.cpp.
void ripple::ValidatorSite::start | ( | ) |
Start fetching lists from sites.
This does nothing if list fetching has already started
May be called concurrently
Definition at line 167 of file ValidatorSite.cpp.
void ripple::ValidatorSite::join | ( | ) |
Wait for current fetches from sites to complete.
May be called concurrently
Definition at line 176 of file ValidatorSite.cpp.
void ripple::ValidatorSite::stop | ( | ) |
Stop fetching lists from sites.
This blocks until list fetching has stopped
May be called concurrently
Definition at line 183 of file ValidatorSite.cpp.
Json::Value ripple::ValidatorSite::getJson | ( | ) | const |
Return JSON representation of configured validator sites.
Definition at line 667 of file ValidatorSite.cpp.
|
private |
Load configured site URIs.
Definition at line 137 of file ValidatorSite.cpp.
|
private |
Queue next site to be fetched lock over site_mutex_ and state_mutex_ required.
Definition at line 209 of file ValidatorSite.cpp.
|
private |
request took too long
Definition at line 312 of file ValidatorSite.cpp.
|
private |
Fetch site whose time has come.
Definition at line 340 of file ValidatorSite.cpp.
|
private |
Store latest list fetched from site.
Definition at line 540 of file ValidatorSite.cpp.
|
private |
Store latest list fetched from anywhere.
Definition at line 628 of file ValidatorSite.cpp.
|
private |
Initiate request to given resource.
lock over sites_mutex_ required
Definition at line 231 of file ValidatorSite.cpp.
|
private |
Parse json response from validator list site.
lock over sites_mutex_ required
Definition at line 372 of file ValidatorSite.cpp.
|
private |
Interpret a redirect response.
lock over sites_mutex_ required
Definition at line 494 of file ValidatorSite.cpp.
|
private |
If no sites are provided, or a site fails to load, get a list of local cache files from the ValidatorList.
Definition at line 120 of file ValidatorSite.cpp.
|
friend |
Definition at line 71 of file ValidatorSite.h.
|
private |
Definition at line 117 of file ValidatorSite.h.
|
private |
Definition at line 118 of file ValidatorSite.h.
|
mutableprivate |
Definition at line 122 of file ValidatorSite.h.
|
mutableprivate |
Definition at line 123 of file ValidatorSite.h.
|
private |
Definition at line 125 of file ValidatorSite.h.
|
private |
Definition at line 126 of file ValidatorSite.h.
|
private |
Definition at line 127 of file ValidatorSite.h.
|
private |
Definition at line 130 of file ValidatorSite.h.
|
private |
Definition at line 133 of file ValidatorSite.h.
|
private |
Definition at line 134 of file ValidatorSite.h.
|
private |
Definition at line 137 of file ValidatorSite.h.
|
private |
Definition at line 140 of file ValidatorSite.h.