xrpld
Loading...
Searching...
No Matches
xrpld/overlay/Peer.h
1#pragma once
2
3#include <xrpld/overlay/Message.h>
4
5#include <xrpl/basics/base_uint.h>
6#include <xrpl/beast/net/IPEndpoint.h>
7#include <xrpl/json/json_value.h>
8#include <xrpl/protocol/PublicKey.h>
9
10#include <cstddef>
11#include <cstdint>
12#include <memory>
13#include <optional>
14#include <string>
15
16namespace xrpl {
17
18namespace resource {
19class Charge;
20} // namespace resource
21
26
30class Peer
31{
32public:
34
42
43 virtual ~Peer() = default;
44
45 //
46 // Network
47 //
48
49 virtual void
51
52 [[nodiscard]] virtual beast::ip::Endpoint
53 getRemoteAddress() const = 0;
54
58 virtual void
60
64 virtual void
65 addTxQueue(uint256 const&) = 0;
66
70 virtual void
72
76 virtual void
77 charge(resource::Charge const& fee, std::string const& context) = 0;
78
79 //
80 // Identity
81 //
82
83 [[nodiscard]] virtual id_t
84 id() const = 0;
85
89 [[nodiscard]] virtual bool
90 cluster() const = 0;
91
92 [[nodiscard]] virtual bool
93 isHighLatency() const = 0;
94
95 [[nodiscard]] virtual int
96 getScore(bool) const = 0;
97
98 [[nodiscard]] virtual PublicKey const&
99 getNodePublic() const = 0;
100
101 virtual json::Value
102 json() = 0;
103
104 [[nodiscard]] virtual bool
106
107 [[nodiscard]] virtual std::optional<std::size_t>
109
110 virtual void
112
113 [[nodiscard]] virtual std::string const&
114 fingerprint() const = 0;
115 //
116 // Ledger
117 //
118
119 [[nodiscard]] virtual uint256
121 [[nodiscard]] virtual bool
122 hasLedger(uint256 const& hash, std::uint32_t seq) const = 0;
123 virtual void
124 ledgerRange(std::uint32_t& minSeq, std::uint32_t& maxSeq) const = 0;
125 [[nodiscard]] virtual bool
126 hasTxSet(uint256 const& hash) const = 0;
127 virtual void
129 virtual bool
131
132 [[nodiscard]] virtual bool
134
135 [[nodiscard]] virtual bool
137};
138
139} // namespace xrpl
A version-independent IP address and port combination.
Definition IPEndpoint.h:24
Represents a JSON value.
Definition json_value.h:117
Represents a peer connection in the overlay.
virtual int getScore(bool) const =0
virtual bool isHighLatency() const =0
virtual ~Peer()=default
virtual std::string const & fingerprint() const =0
virtual bool hasRange(std::uint32_t uMin, std::uint32_t uMax)=0
virtual bool cluster() const =0
Returns true if this connection is a member of the cluster.
virtual void setPublisherListSequence(PublicKey const &, std::size_t const)=0
virtual uint256 getClosedLedgerHash() const =0
virtual void send(std::shared_ptr< Message > const &m)=0
virtual void cycleStatus()=0
virtual beast::ip::Endpoint getRemoteAddress() const =0
virtual id_t id() const =0
virtual void removeTxQueue(uint256 const &)=0
Remove hash from the transactions' hashes queue.
virtual bool compressionEnabled() const =0
std::shared_ptr< Peer > ptr
virtual bool hasLedger(uint256 const &hash, std::uint32_t seq) const =0
virtual PublicKey const & getNodePublic() const =0
virtual void charge(resource::Charge const &fee, std::string const &context)=0
Adjust this peer's load balance based on the type of load imposed.
virtual bool supportsFeature(ProtocolFeature f) const =0
virtual std::optional< std::size_t > publisherListSequence(PublicKey const &) const =0
virtual bool txReduceRelayEnabled() const =0
virtual void addTxQueue(uint256 const &)=0
Aggregate transaction's hash.
virtual json::Value json()=0
std::uint32_t id_t
Uniquely identifies a peer.
virtual void ledgerRange(std::uint32_t &minSeq, std::uint32_t &maxSeq) const =0
virtual void sendTxQueue()=0
Send aggregated transactions' hashes.
virtual bool hasTxSet(uint256 const &hash) const =0
A public key.
Definition PublicKey.h:53
A consumption charge.
Definition Charge.h:13
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
BaseUInt< 256 > uint256
Definition base_uint.h:580