rippled
|
Classes | |
class | Metrics |
Public Types | |
enum | Tracking { Tracking::diverged, Tracking::unknown, Tracking::converged } |
Whether the peer's view of the ledger converges or diverges from ours. More... | |
using | ptr = std::shared_ptr< Peer > |
using | id_t = std::uint32_t |
Uniquely identifies a peer. More... | |
Public Member Functions | |
PeerImp (PeerImp const &)=delete | |
PeerImp & | operator= (PeerImp const &)=delete |
PeerImp (Application &app, id_t id, std::shared_ptr< PeerFinder::Slot > const &slot, http_request_type &&request, PublicKey const &publicKey, ProtocolVersion protocol, Resource::Consumer consumer, std::unique_ptr< stream_type > &&stream_ptr, OverlayImpl &overlay) | |
Create an active incoming peer from an established ssl connection. More... | |
template<class Buffers > | |
PeerImp (Application &app, std::unique_ptr< stream_type > &&stream_ptr, Buffers const &buffers, std::shared_ptr< PeerFinder::Slot > &&slot, http_response_type &&response, Resource::Consumer usage, PublicKey const &publicKey, ProtocolVersion protocol, id_t id, OverlayImpl &overlay) | |
Create outgoing, handshaked peer. More... | |
virtual | ~PeerImp () |
beast::Journal const & | pjournal () const |
std::shared_ptr< PeerFinder::Slot > const & | slot () |
virtual void | run () |
void | stop () override |
void | send (std::shared_ptr< Message > const &m) override |
void | sendTxQueue () override |
Send aggregated transactions' hashes. More... | |
void | addTxQueue (uint256 const &hash) override |
Add transaction's hash to the transactions' hashes queue. More... | |
void | removeTxQueue (uint256 const &hash) override |
Remove transaction's hash from the transactions' hashes queue. More... | |
template<class FwdIt , class = typename std::enable_if_t<std::is_same< typename std::iterator_traits<FwdIt>::value_type, PeerFinder::Endpoint>::value>> | |
void | sendEndpoints (FwdIt first, FwdIt last) |
Send a set of PeerFinder endpoints as a protocol message. More... | |
beast::IP::Endpoint | getRemoteAddress () const override |
void | charge (Resource::Charge const &fee) override |
Adjust this peer's load balance based on the type of load imposed. More... | |
Peer::id_t | id () const override |
bool | crawl () const |
Returns true if this connection will publicly share its IP address. More... | |
bool | cluster () const override |
Returns true if this connection is a member of the cluster. More... | |
void | checkTracking (std::uint32_t validationSeq) |
Check if the peer is tracking. More... | |
void | checkTracking (std::uint32_t seq1, std::uint32_t seq2) |
PublicKey const & | getNodePublic () const override |
std::string | getVersion () const |
Return the version of rippled that the peer is running, if reported. More... | |
clock_type::duration | uptime () const |
Json::Value | json () override |
bool | supportsFeature (ProtocolFeature f) const override |
std::optional< std::size_t > | publisherListSequence (PublicKey const &pubKey) const override |
void | setPublisherListSequence (PublicKey const &pubKey, std::size_t const seq) override |
uint256 const & | getClosedLedgerHash () const override |
bool | hasLedger (uint256 const &hash, std::uint32_t seq) const override |
void | ledgerRange (std::uint32_t &minSeq, std::uint32_t &maxSeq) const override |
bool | hasTxSet (uint256 const &hash) const override |
void | cycleStatus () override |
bool | hasRange (std::uint32_t uMin, std::uint32_t uMax) override |
int | getScore (bool haveItem) const override |
bool | isHighLatency () const override |
void | fail (std::string const &reason) |
const hash_map< PublicKey, NodeStore::ShardInfo > | getPeerShardInfos () const |
bool | compressionEnabled () const override |
bool | txReduceRelayEnabled () const override |
void | onMessageUnknown (std::uint16_t type) |
void | onMessageBegin (std::uint16_t type, std::shared_ptr<::google::protobuf::Message > const &m, std::size_t size, std::size_t uncompressed_size, bool isCompressed) |
void | onMessageEnd (std::uint16_t type, std::shared_ptr<::google::protobuf::Message > const &m) |
void | onMessage (std::shared_ptr< protocol::TMManifests > const &m) |
void | onMessage (std::shared_ptr< protocol::TMPing > const &m) |
void | onMessage (std::shared_ptr< protocol::TMCluster > const &m) |
void | onMessage (std::shared_ptr< protocol::TMGetPeerShardInfo > const &m) |
void | onMessage (std::shared_ptr< protocol::TMPeerShardInfo > const &m) |
void | onMessage (std::shared_ptr< protocol::TMGetPeerShardInfoV2 > const &m) |
void | onMessage (std::shared_ptr< protocol::TMPeerShardInfoV2 > const &m) |
void | onMessage (std::shared_ptr< protocol::TMEndpoints > const &m) |
void | onMessage (std::shared_ptr< protocol::TMTransaction > const &m) |
void | onMessage (std::shared_ptr< protocol::TMGetLedger > const &m) |
void | onMessage (std::shared_ptr< protocol::TMLedgerData > const &m) |
void | onMessage (std::shared_ptr< protocol::TMProposeSet > const &m) |
void | onMessage (std::shared_ptr< protocol::TMStatusChange > const &m) |
void | onMessage (std::shared_ptr< protocol::TMHaveTransactionSet > const &m) |
void | onMessage (std::shared_ptr< protocol::TMValidatorList > const &m) |
void | onMessage (std::shared_ptr< protocol::TMValidatorListCollection > const &m) |
void | onMessage (std::shared_ptr< protocol::TMValidation > const &m) |
void | onMessage (std::shared_ptr< protocol::TMGetObjectByHash > const &m) |
void | onMessage (std::shared_ptr< protocol::TMHaveTransactions > const &m) |
void | onMessage (std::shared_ptr< protocol::TMTransactions > const &m) |
void | onMessage (std::shared_ptr< protocol::TMSquelch > const &m) |
void | onMessage (std::shared_ptr< protocol::TMProofPathRequest > const &m) |
void | onMessage (std::shared_ptr< protocol::TMProofPathResponse > const &m) |
void | onMessage (std::shared_ptr< protocol::TMReplayDeltaRequest > const &m) |
void | onMessage (std::shared_ptr< protocol::TMReplayDeltaResponse > const &m) |
T | shared_from_this (T... args) |
T | weak_from_this (T... args) |
Private Types | |
using | clock_type = std::chrono::steady_clock |
using | error_code = boost::system::error_code |
using | socket_type = boost::asio::ip::tcp::socket |
using | middle_type = boost::beast::tcp_stream |
using | stream_type = boost::beast::ssl_stream< middle_type > |
using | address_type = boost::asio::ip::address |
using | endpoint_type = boost::asio::ip::tcp::endpoint |
using | waitable_timer = boost::asio::basic_waitable_timer< std::chrono::steady_clock > |
using | Compressed = compression::Compressed |
Private Member Functions | |
void | close () |
void | fail (std::string const &name, error_code ec) |
void | gracefulClose () |
void | setTimer () |
void | cancelTimer () |
void | onTimer (boost::system::error_code const &ec) |
void | onShutdown (error_code ec) |
void | doAccept () |
std::string | name () const |
std::string | domain () const |
void | doProtocolStart () |
void | onReadMessage (error_code ec, std::size_t bytes_transferred) |
void | onWriteMessage (error_code ec, std::size_t bytes_transferred) |
void | handleTransaction (std::shared_ptr< protocol::TMTransaction > const &m, bool eraseTxQueue) |
Called from onMessage(TMTransaction(s)). More... | |
void | handleHaveTransactions (std::shared_ptr< protocol::TMHaveTransactions > const &m) |
Handle protocol message with hashes of transactions that have not been relayed by an upstream node down to its peers - request transactions, which have not been relayed to this peer. More... | |
bool | reduceRelayReady () |
void | addLedger (uint256 const &hash, std::lock_guard< std::mutex > const &lockedRecentLock) |
void | doFetchPack (const std::shared_ptr< protocol::TMGetObjectByHash > &packet) |
void | onValidatorListMessage (std::string const &messageType, std::string const &manifest, std::uint32_t version, std::vector< ValidatorBlobInfo > const &blobs) |
void | doTransactions (std::shared_ptr< protocol::TMGetObjectByHash > const &packet) |
Process peer's request to send missing transactions. More... | |
void | checkTransaction (int flags, bool checkSignature, std::shared_ptr< STTx const > const &stx) |
void | checkPropose (bool isTrusted, std::shared_ptr< protocol::TMProposeSet > const &packet, RCLCxPeerPos peerPos) |
void | checkValidation (std::shared_ptr< STValidation > const &val, uint256 const &key, std::shared_ptr< protocol::TMValidation > const &packet) |
void | sendLedgerBase (std::shared_ptr< Ledger const > const &ledger, protocol::TMLedgerData &ledgerData) |
std::shared_ptr< Ledger const > | getLedger (std::shared_ptr< protocol::TMGetLedger > const &m) |
std::shared_ptr< SHAMap const > | getTxSet (std::shared_ptr< protocol::TMGetLedger > const &m) const |
void | processLedgerRequest (std::shared_ptr< protocol::TMGetLedger > const &m) |
Static Private Member Functions | |
static std::string | makePrefix (id_t id) |
Static Private Attributes | |
static std::atomic_bool | reduceRelayReady_ {false} |
Friends | |
class | OverlayImpl |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
inherited |
Definition at line 48 of file ripple/overlay/Peer.h.
|
inherited |
Uniquely identifies a peer.
This can be stored in tables to find the peer later. Callers can discover if the peer is no longer connected and make adjustments as needed.
Definition at line 55 of file ripple/overlay/Peer.h.
|
strong |
|
delete |
ripple::PeerImp::PeerImp | ( | Application & | app, |
id_t | id, | ||
std::shared_ptr< PeerFinder::Slot > const & | slot, | ||
http_request_type && | request, | ||
PublicKey const & | publicKey, | ||
ProtocolVersion | protocol, | ||
Resource::Consumer | consumer, | ||
std::unique_ptr< stream_type > && | stream_ptr, | ||
OverlayImpl & | overlay | ||
) |
Create an active incoming peer from an established ssl connection.
Definition at line 66 of file PeerImp.cpp.
ripple::PeerImp::PeerImp | ( | Application & | app, |
std::unique_ptr< stream_type > && | stream_ptr, | ||
Buffers const & | buffers, | ||
std::shared_ptr< PeerFinder::Slot > && | slot, | ||
http_response_type && | response, | ||
Resource::Consumer | usage, | ||
PublicKey const & | publicKey, | ||
ProtocolVersion | protocol, | ||
id_t | id, | ||
OverlayImpl & | overlay | ||
) |
|
virtual |
Definition at line 134 of file PeerImp.cpp.
beast::Journal const& ripple::PeerImp::pjournal | ( | ) | const |
std::shared_ptr<PeerFinder::Slot> const& ripple::PeerImp::slot | ( | ) |
|
virtual |
Reimplemented in ripple::test::tx_reduce_relay_test::PeerTest.
Definition at line 157 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::OverlayImpl::Child.
Definition at line 215 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Reimplemented in ripple::test::tx_reduce_relay_test::PeerTest.
Definition at line 241 of file PeerImp.cpp.
|
overridevirtual |
Send aggregated transactions' hashes.
Implements ripple::Peer.
Definition at line 295 of file PeerImp.cpp.
|
overridevirtual |
Add transaction's hash to the transactions' hashes queue.
hash | transaction's hash |
Implements ripple::Peer.
Reimplemented in ripple::test::tx_reduce_relay_test::PeerTest.
Definition at line 314 of file PeerImp.cpp.
|
overridevirtual |
Remove transaction's hash from the transactions' hashes queue.
hash | transaction's hash |
Implements ripple::Peer.
Definition at line 331 of file PeerImp.cpp.
void ripple::PeerImp::sendEndpoints | ( | FwdIt | first, |
FwdIt | last | ||
) |
Send a set of PeerFinder endpoints as a protocol message.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Adjust this peer's load balance based on the type of load imposed.
Implements ripple::Peer.
Definition at line 343 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
bool ripple::PeerImp::crawl | ( | ) | const |
Returns true
if this connection will publicly share its IP address.
Definition at line 357 of file PeerImp.cpp.
|
overridevirtual |
Returns true
if this connection is a member of the cluster.
Implements ripple::Peer.
Definition at line 366 of file PeerImp.cpp.
void ripple::PeerImp::checkTracking | ( | std::uint32_t | validationSeq | ) |
Check if the peer is tracking.
validationSeq | The ledger sequence of a recently-validated ledger |
Definition at line 2193 of file PeerImp.cpp.
void ripple::PeerImp::checkTracking | ( | std::uint32_t | seq1, |
std::uint32_t | seq2 | ||
) |
Definition at line 2212 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
std::string ripple::PeerImp::getVersion | ( | ) | const |
Return the version of rippled that the peer is running, if reported.
Definition at line 372 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 380 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 498 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 515 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 541 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 550 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 558 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 568 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 3620 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 3658 of file PeerImp.cpp.
void ripple::PeerImp::fail | ( | std::string const & | reason | ) |
Definition at line 600 of file PeerImp.cpp.
const hash_map< PublicKey, NodeStore::ShardInfo > ripple::PeerImp::getPeerShardInfos | ( | ) | const |
Definition at line 632 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
private |
Definition at line 578 of file PeerImp.cpp.
|
private |
Definition at line 619 of file PeerImp.cpp.
|
private |
Definition at line 639 of file PeerImp.cpp.
|
private |
Definition at line 655 of file PeerImp.cpp.
|
private |
Definition at line 673 of file PeerImp.cpp.
|
staticprivate |
Definition at line 682 of file PeerImp.cpp.
|
private |
Definition at line 690 of file PeerImp.cpp.
|
private |
Definition at line 751 of file PeerImp.cpp.
|
private |
Definition at line 767 of file PeerImp.cpp.
|
private |
Definition at line 833 of file PeerImp.cpp.
|
private |
Definition at line 840 of file PeerImp.cpp.
|
private |
Definition at line 850 of file PeerImp.cpp.
|
private |
Definition at line 893 of file PeerImp.cpp.
|
private |
Definition at line 949 of file PeerImp.cpp.
|
private |
Called from onMessage(TMTransaction(s)).
m | Transaction protocol message |
eraseTxQueue | is true when called from onMessage(TMTransaction) and is false when called from onMessage(TMTransactions). If true then the transaction hash is erased from txQueue_. Don't need to erase from the queue when called from onMessage(TMTransactions) because this message is a response to the missing transactions request and the queue would not have any of these transactions. |
Definition at line 1522 of file PeerImp.cpp.
|
private |
Handle protocol message with hashes of transactions that have not been relayed by an upstream node down to its peers - request transactions, which have not been relayed to this peer.
m | protocol message with transactions' hashes |
Definition at line 2815 of file PeerImp.cpp.
|
private |
Definition at line 3665 of file PeerImp.cpp.
void ripple::PeerImp::onMessageUnknown | ( | std::uint16_t | type | ) |
Definition at line 1003 of file PeerImp.cpp.
void ripple::PeerImp::onMessageBegin | ( | std::uint16_t | type, |
std::shared_ptr<::google::protobuf::Message > const & | m, | ||
std::size_t | size, | ||
std::size_t | uncompressed_size, | ||
bool | isCompressed | ||
) |
Definition at line 1009 of file PeerImp.cpp.
void ripple::PeerImp::onMessageEnd | ( | std::uint16_t | type, |
std::shared_ptr<::google::protobuf::Message > const & | m | ||
) |
Definition at line 1043 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMManifests > const & | m | ) |
Definition at line 1052 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMPing > const & | m | ) |
Definition at line 1072 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMCluster > const & | m | ) |
Definition at line 1109 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetPeerShardInfo > const & | m | ) |
Definition at line 1181 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMPeerShardInfo > const & | m | ) |
Definition at line 1187 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetPeerShardInfoV2 > const & | m | ) |
Definition at line 1193 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMPeerShardInfoV2 > const & | m | ) |
Definition at line 1263 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMEndpoints > const & | m | ) |
Definition at line 1469 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMTransaction > const & | m | ) |
Definition at line 1516 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetLedger > const & | m | ) |
Definition at line 1620 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMLedgerData > const & | m | ) |
Definition at line 1814 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProposeSet > const & | m | ) |
Definition at line 1913 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMStatusChange > const & | m | ) |
Definition at line 2018 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMHaveTransactionSet > const & | m | ) |
Definition at line 2234 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidatorList > const & | m | ) |
Definition at line 2456 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidatorListCollection > const & | m | ) |
Definition at line 2484 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidation > const & | m | ) |
Definition at line 2523 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetObjectByHash > const & | m | ) |
Definition at line 2634 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMHaveTransactions > const & | m | ) |
Definition at line 2796 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMTransactions > const & | m | ) |
Definition at line 2865 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMSquelch > const & | m | ) |
Definition at line 2888 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProofPathRequest > const & | m | ) |
Definition at line 1716 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProofPathResponse > const & | m | ) |
Definition at line 1750 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMReplayDeltaRequest > const & | m | ) |
Definition at line 1765 of file PeerImp.cpp.
void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMReplayDeltaResponse > const & | m | ) |
Definition at line 1799 of file PeerImp.cpp.
|
private |
Definition at line 2944 of file PeerImp.cpp.
|
private |
Definition at line 2960 of file PeerImp.cpp.
|
private |
Definition at line 2260 of file PeerImp.cpp.
|
private |
Process peer's request to send missing transactions.
The request is sent in response to TMHaveTransactions.
packet | protocol message containing missing transactions' hashes. |
Definition at line 2994 of file PeerImp.cpp.
|
private |
Definition at line 3049 of file PeerImp.cpp.
|
private |
Definition at line 3125 of file PeerImp.cpp.
|
private |
Definition at line 3167 of file PeerImp.cpp.
|
private |
Definition at line 3262 of file PeerImp.cpp.
|
private |
Definition at line 3302 of file PeerImp.cpp.
|
private |
Definition at line 3413 of file PeerImp.cpp.
|
private |
Definition at line 3448 of file PeerImp.cpp.
|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
struct { ... } ripple::PeerImp::metrics_ |