|
xrpld
|


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. | |
Public Member Functions | |
| PeerTest (Application &app, std::shared_ptr< PeerFinder::Slot > const &slot, http_request_type &&request, PublicKey const &publicKey, ProtocolVersion protocol, Resource::Consumer consumer, std::unique_ptr< tx_reduce_relay_test::stream_type > &&streamPtr, OverlayImpl &overlay) | |
| ~PeerTest () override=default | |
| void | run () override |
| void | send (std::shared_ptr< Message > const &) override |
| void | addTxQueue (uint256 const &hash) override |
| Add transaction's hash to the transactions' hashes queue. | |
| beast::Journal const & | pJournal () const |
| std::shared_ptr< PeerFinder::Slot > const & | slot () |
| void | stop () override |
| void | sendTxQueue () override |
| Send aggregated transactions' hashes. | |
| void | removeTxQueue (uint256 const &hash) override |
| Remove transaction's hash from the transactions' hashes queue. | |
| template<class FwdIt, class = std::enable_if_t< std::is_same_v<typename std::iterator_traits<FwdIt>::value_type, PeerFinder::Endpoint>>> | |
| void | sendEndpoints (FwdIt first, FwdIt last) |
| Send a set of PeerFinder endpoints as a protocol message. | |
| 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. | |
| Peer::id_t | id () const override |
| bool | crawl () const |
| Returns true if this connection will publicly share its IP address. | |
| bool | cluster () const override |
| Returns true if this connection is a member of the cluster. | |
| void | checkTracking (std::uint32_t validationSeq) |
| Check if the peer is tracking. | |
| void | checkTracking (std::uint32_t seq1, std::uint32_t seq2) |
| PublicKey const & | getNodePublic () const override |
| std::string | getVersion () const |
| Return the version of xrpld that the peer is running, if reported. | |
| 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 uncompressedSize, 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) |
Static Public Member Functions | |
| static void | init () |
Static Public Attributes | |
| static std::size_t | sid = 0 |
| static std::uint16_t | queueTx = 0 |
| static std::uint16_t | sendTx = 0 |
Protected Member Functions | |
| void | processGetObjectByHash (std::shared_ptr< protocol::TMGetObjectByHash > const &m) |
| Process a generic-query TMGetObjectByHash message. | |
| Resource::Charge | currentFeeCharge () const |
| Read-only accessor for the accumulated peer-message charge. | |
Static Protected Member Functions | |
| static Resource::Charge | computeGetObjectByHashFee (int const requested, int const found) |
| Compute the per-message resource charge for a TMGetObjectByHash request based on how much work was actually performed. | |
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 | fail (std::string const &name, error_code ec) |
| void | close () |
| void | gracefulClose () |
| void | setTimer () |
| void | cancelTimer () noexcept |
| 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 bytesTransferred) |
| void | onWriteMessage (error_code ec, std::size_t bytesTransferred) |
| void | handleTransaction (std::shared_ptr< protocol::TMTransaction > const &m, bool eraseTxQueue, bool batch) |
| Called from onMessage(TMTransaction(s)). | |
| 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. | |
| std::string const & | fingerprint () const override |
| std::string const & | prefix () const |
| void | addLedger (uint256 const &hash, std::scoped_lock< std::mutex > const &lockedRecentLock) |
| void | doFetchPack (std::shared_ptr< protocol::TMGetObjectByHash > const &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. | |
| void | checkTransaction (HashRouterFlags 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 (std::string const &fingerprint) |
Definition at line 119 of file tx_reduce_relay_test.cpp.
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
inherited |
Definition at line 26 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 33 of file xrpld/overlay/Peer.h.
|
stronginherited |
| xrpl::test::tx_reduce_relay_test::PeerTest::PeerTest | ( | Application & | app, |
| std::shared_ptr< PeerFinder::Slot > const & | slot, | ||
| http_request_type && | request, | ||
| PublicKey const & | publicKey, | ||
| ProtocolVersion | protocol, | ||
| Resource::Consumer | consumer, | ||
| std::unique_ptr< tx_reduce_relay_test::stream_type > && | streamPtr, | ||
| OverlayImpl & | overlay ) |
Definition at line 122 of file tx_reduce_relay_test.cpp.
|
overridedefault |
|
overridevirtual |
Reimplemented from xrpl::PeerImp.
Definition at line 147 of file tx_reduce_relay_test.cpp.
|
overridevirtual |
Reimplemented from xrpl::PeerImp.
Definition at line 151 of file tx_reduce_relay_test.cpp.
|
overridevirtual |
Add transaction's hash to the transactions' hashes queue.
| hash | transaction's hash |
Reimplemented from xrpl::PeerImp.
Definition at line 156 of file tx_reduce_relay_test.cpp.
|
static |
Definition at line 161 of file tx_reduce_relay_test.cpp.
|
inherited |
|
inherited |
|
overridevirtualinherited |
Implements xrpl::OverlayImpl::Child.
Definition at line 256 of file PeerImp.cpp.
|
overridevirtualinherited |
Send aggregated transactions' hashes.
Implements xrpl::Peer.
Definition at line 331 of file PeerImp.cpp.
|
overridevirtualinherited |
Remove transaction's hash from the transactions' hashes queue.
| hash | transaction's hash |
Implements xrpl::Peer.
Definition at line 362 of file PeerImp.cpp.
|
inherited |
Send a set of PeerFinder endpoints as a protocol message.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
overridevirtualinherited |
Adjust this peer's load balance based on the type of load imposed.
Implements xrpl::Peer.
Definition at line 371 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
inherited |
Returns true if this connection will publicly share its IP address.
Definition at line 397 of file PeerImp.cpp.
|
overridevirtualinherited |
Returns true if this connection is a member of the cluster.
Implements xrpl::Peer.
Definition at line 406 of file PeerImp.cpp.
|
inherited |
Check if the peer is tracking.
| validationSeq | The ledger sequence of a recently-validated ledger |
Definition at line 1998 of file PeerImp.cpp.
|
inherited |
Definition at line 2017 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
inherited |
Return the version of xrpld that the peer is running, if reported.
Definition at line 412 of file PeerImp.cpp.
|
inherited |
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 420 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 534 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 551 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 565 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 574 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 581 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 591 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 3507 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
Definition at line 3549 of file PeerImp.cpp.
|
inherited |
Definition at line 617 of file PeerImp.cpp.
|
privateinherited |
Definition at line 630 of file PeerImp.cpp.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
overridevirtualinherited |
Implements xrpl::Peer.
|
privateinherited |
Definition at line 600 of file PeerImp.cpp.
|
privateinherited |
Definition at line 642 of file PeerImp.cpp.
|
privateinherited |
Definition at line 657 of file PeerImp.cpp.
|
privatenoexceptinherited |
Definition at line 674 of file PeerImp.cpp.
|
staticprivateinherited |
Definition at line 689 of file PeerImp.cpp.
|
privateinherited |
Definition at line 697 of file PeerImp.cpp.
|
privateinherited |
Definition at line 757 of file PeerImp.cpp.
|
privateinherited |
Definition at line 783 of file PeerImp.cpp.
|
privateinherited |
Definition at line 857 of file PeerImp.cpp.
|
privateinherited |
Definition at line 864 of file PeerImp.cpp.
|
privateinherited |
Definition at line 874 of file PeerImp.cpp.
|
privateinherited |
Definition at line 912 of file PeerImp.cpp.
|
privateinherited |
Definition at line 986 of file PeerImp.cpp.
|
privateinherited |
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 1285 of file PeerImp.cpp.
|
privateinherited |
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 2653 of file PeerImp.cpp.
|
overrideprivatevirtualinherited |
Implements xrpl::Peer.
|
privateinherited |
|
inherited |
Definition at line 1040 of file PeerImp.cpp.
|
inherited |
Definition at line 1046 of file PeerImp.cpp.
|
inherited |
Definition at line 1086 of file PeerImp.cpp.
|
inherited |
Definition at line 1093 of file PeerImp.cpp.
|
inherited |
Definition at line 1112 of file PeerImp.cpp.
|
inherited |
Definition at line 1153 of file PeerImp.cpp.
|
inherited |
Definition at line 1222 of file PeerImp.cpp.
|
inherited |
Definition at line 1279 of file PeerImp.cpp.
|
inherited |
Definition at line 1415 of file PeerImp.cpp.
|
inherited |
Definition at line 1625 of file PeerImp.cpp.
|
inherited |
Definition at line 1720 of file PeerImp.cpp.
|
inherited |
Definition at line 1825 of file PeerImp.cpp.
|
inherited |
Definition at line 2038 of file PeerImp.cpp.
|
inherited |
Definition at line 2258 of file PeerImp.cpp.
|
inherited |
Definition at line 2282 of file PeerImp.cpp.
|
inherited |
Definition at line 2315 of file PeerImp.cpp.
|
inherited |
Definition at line 2421 of file PeerImp.cpp.
|
inherited |
Definition at line 2636 of file PeerImp.cpp.
|
inherited |
Definition at line 2699 of file PeerImp.cpp.
|
inherited |
Definition at line 2723 of file PeerImp.cpp.
|
inherited |
Definition at line 1525 of file PeerImp.cpp.
|
inherited |
Definition at line 1560 of file PeerImp.cpp.
|
inherited |
Definition at line 1575 of file PeerImp.cpp.
|
inherited |
Definition at line 1610 of file PeerImp.cpp.
|
privateinherited |
Definition at line 2766 of file PeerImp.cpp.
|
privateinherited |
Definition at line 2779 of file PeerImp.cpp.
|
privateinherited |
Definition at line 2063 of file PeerImp.cpp.
|
privateinherited |
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 2812 of file PeerImp.cpp.
|
privateinherited |
Definition at line 2864 of file PeerImp.cpp.
|
privateinherited |
Definition at line 2997 of file PeerImp.cpp.
|
privateinherited |
Definition at line 3045 of file PeerImp.cpp.
|
privateinherited |
Definition at line 3136 of file PeerImp.cpp.
|
privateinherited |
Definition at line 3173 of file PeerImp.cpp.
|
privateinherited |
Definition at line 3257 of file PeerImp.cpp.
|
privateinherited |
Definition at line 3289 of file PeerImp.cpp.
|
protectedinherited |
Process a generic-query TMGetObjectByHash message.
Dispatched from onMessage(TMGetObjectByHash) to the JobQueue (JtLedgerReq) so synchronous NodeStore lookups do not block the peer's I/O strand. Caps iteration at Tuning::kHardMaxReplyNodes regardless of hit/miss outcome and applies differential pricing via computeGetObjectByHashFee() after the fetch loop completes.
| m | The protocol message containing requested object hashes. |
Definition at line 2573 of file PeerImp.cpp.
|
staticprotectedinherited |
Compute the per-message resource charge for a TMGetObjectByHash request based on how much work was actually performed.
The charge has three components on top of the base Resource::kFeeModerateBurdenPeer:
The first Tuning::kFreeObjectsPerRequest objects are free so that legitimate InboundLedger::getNeededHashes() traffic (at most 8 objects) is unaffected.
| requested | Number of objects requested by the message. This value is used for request-size pricing and may exceed Tuning::kHardMaxReplyNodes when this helper is called directly, even though processing caps the iterations to Tuning::kHardMaxReplyNodes. |
| found | Number of objects successfully returned in the reply. |
Definition at line 3481 of file PeerImp.cpp.
|
protectedinherited |
Read-only accessor for the accumulated peer-message charge.
Exposed at protected scope so test subclasses can verify the oversized-request rejection path (Layer 1) without invoking the full JobQueue handler. Production callers should never read this back — the value is consumed by charge()/disconnect() internally.
|
static |
Definition at line 167 of file tx_reduce_relay_test.cpp.
|
static |
Definition at line 168 of file tx_reduce_relay_test.cpp.
|
static |
Definition at line 169 of file tx_reduce_relay_test.cpp.
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
mutableprivateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
mutableprivateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
| struct { ... } xrpl::PeerImp::metrics_ |