|
rippled
|
#include <PeerImp.h>


Classes | |
| struct | ChargeWithContext |
| class | Metrics |
Public Types | |
| enum class | Tracking { diverged , unknown , 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, std::string const &context) 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) |
| 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::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, bool batch) |
| 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, bool batch) |
| 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 45 of file xrpld/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 52 of file xrpld/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 68 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 136 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 159 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::OverlayImpl::Child.
Definition at line 217 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 243 of file PeerImp.cpp.
|
overridevirtual |
Send aggregated transactions' hashes.
Implements ripple::Peer.
Definition at line 297 of file PeerImp.cpp.
|
overridevirtual |
Add transaction's hash to the transactions' hashes queue.
| hash | transaction's hash |
Implements ripple::Peer.
Definition at line 316 of file PeerImp.cpp.
|
overridevirtual |
Remove transaction's hash from the transactions' hashes queue.
| hash | transaction's hash |
Implements ripple::Peer.
Definition at line 333 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 345 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 359 of file PeerImp.cpp.
|
overridevirtual |
Returns true if this connection is a member of the cluster.
Implements ripple::Peer.
Definition at line 368 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 1908 of file PeerImp.cpp.
| void ripple::PeerImp::checkTracking | ( | std::uint32_t | seq1, |
| std::uint32_t | seq2 | ||
| ) |
Definition at line 1927 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 374 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 382 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 500 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 517 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 532 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 541 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 549 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 559 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 3388 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
Definition at line 3426 of file PeerImp.cpp.
| void ripple::PeerImp::fail | ( | std::string const & | reason | ) |
Definition at line 593 of file PeerImp.cpp.
|
overridevirtual |
Implements ripple::Peer.
|
overridevirtual |
Implements ripple::Peer.
|
private |
Definition at line 569 of file PeerImp.cpp.
|
private |
Definition at line 612 of file PeerImp.cpp.
|
private |
Definition at line 627 of file PeerImp.cpp.
|
private |
Definition at line 648 of file PeerImp.cpp.
|
private |
Definition at line 666 of file PeerImp.cpp.
|
staticprivate |
Definition at line 675 of file PeerImp.cpp.
|
private |
Definition at line 683 of file PeerImp.cpp.
|
private |
Definition at line 744 of file PeerImp.cpp.
|
private |
Definition at line 760 of file PeerImp.cpp.
|
private |
Definition at line 828 of file PeerImp.cpp.
|
private |
Definition at line 835 of file PeerImp.cpp.
|
private |
Definition at line 845 of file PeerImp.cpp.
|
private |
Definition at line 883 of file PeerImp.cpp.
|
private |
Definition at line 947 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. |
| batch | is false when called from onMessage(TMTransaction) and is true when called from onMessage(TMTransactions). If true, then the transaction is part of a batch, and should not be charged an extra fee. |
Definition at line 1234 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 2545 of file PeerImp.cpp.
|
private |
Definition at line 3433 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::TMEndpoints > const & | m | ) |
Definition at line 1181 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMTransaction > const & | m | ) |
Definition at line 1228 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetLedger > const & | m | ) |
Definition at line 1340 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMLedgerData > const & | m | ) |
Definition at line 1535 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProposeSet > const & | m | ) |
Definition at line 1626 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMStatusChange > const & | m | ) |
Definition at line 1733 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMHaveTransactionSet > const & | m | ) |
Definition at line 1949 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidatorList > const & | m | ) |
Definition at line 2189 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidatorListCollection > const & | m | ) |
Definition at line 2218 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMValidation > const & | m | ) |
Definition at line 2258 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMGetObjectByHash > const & | m | ) |
Definition at line 2370 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMHaveTransactions > const & | m | ) |
Definition at line 2526 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMTransactions > const & | m | ) |
Definition at line 2595 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMSquelch > const & | m | ) |
Definition at line 2619 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProofPathRequest > const & | m | ) |
Definition at line 1429 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMProofPathResponse > const & | m | ) |
Definition at line 1467 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMReplayDeltaRequest > const & | m | ) |
Definition at line 1482 of file PeerImp.cpp.
| void ripple::PeerImp::onMessage | ( | std::shared_ptr< protocol::TMReplayDeltaResponse > const & | m | ) |
Definition at line 1520 of file PeerImp.cpp.
|
private |
Definition at line 2675 of file PeerImp.cpp.
|
private |
Definition at line 2691 of file PeerImp.cpp.
|
private |
Definition at line 1975 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 2725 of file PeerImp.cpp.
|
private |
Definition at line 2780 of file PeerImp.cpp.
|
private |
Definition at line 2898 of file PeerImp.cpp.
|
private |
Definition at line 2941 of file PeerImp.cpp.
|
private |
Definition at line 3038 of file PeerImp.cpp.
|
private |
Definition at line 3078 of file PeerImp.cpp.
|
private |
Definition at line 3174 of file PeerImp.cpp.
|
private |
Definition at line 3209 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 |
|
private |
|
private |
|
private |
|
private |
| struct { ... } ripple::PeerImp::metrics_ |