rippled
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
10namespace xrpl {
11
12namespace Resource {
13class Charge;
14}
15
21
23class Peer
24{
25public:
27
34
35 virtual ~Peer() = default;
36
37 //
38 // Network
39 //
40
41 virtual void
43
45 getRemoteAddress() const = 0;
46
48 virtual void
50
52 virtual void
53 addTxQueue(uint256 const&) = 0;
54
56 virtual void
58
60 virtual void
61 charge(Resource::Charge const& fee, std::string const& context) = 0;
62
63 //
64 // Identity
65 //
66
67 virtual id_t
68 id() const = 0;
69
71 virtual bool
72 cluster() const = 0;
73
74 virtual bool
75 isHighLatency() const = 0;
76
77 virtual int
78 getScore(bool) const = 0;
79
80 virtual PublicKey const&
81 getNodePublic() const = 0;
82
83 virtual Json::Value
84 json() = 0;
85
86 virtual bool
88
91
92 virtual void
94
95 virtual std::string const&
96 fingerprint() const = 0;
97 //
98 // Ledger
99 //
100
101 virtual uint256 const&
103 virtual bool
104 hasLedger(uint256 const& hash, std::uint32_t seq) const = 0;
105 virtual void
106 ledgerRange(std::uint32_t& minSeq, std::uint32_t& maxSeq) const = 0;
107 virtual bool
108 hasTxSet(uint256 const& hash) const = 0;
109 virtual void
111 virtual bool
113
114 virtual bool
116
117 virtual bool
119};
120
121} // namespace xrpl
Represents a JSON value.
Definition json_value.h:130
A version-independent IP address and port combination.
Definition IPEndpoint.h:18
Represents a peer connection in the overlay.
virtual int getScore(bool) const =0
virtual bool isHighLatency() const =0
virtual Json::Value json()=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 void send(std::shared_ptr< Message > const &m)=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 void cycleStatus()=0
virtual uint256 const & getClosedLedgerHash() 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
virtual bool hasLedger(uint256 const &hash, std::uint32_t seq) const =0
virtual PublicKey const & getNodePublic() const =0
virtual beast::IP::Endpoint getRemoteAddress() const =0
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 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:42
A consumption charge.
Definition Charge.h:10
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5