1#include <xrpld/app/main/Application.h>
2#include <xrpld/overlay/Overlay.h>
3#include <xrpld/overlay/PeerSet.h>
5#include <xrpl/core/JobQueue.h>
23 ::google::protobuf::Message
const& message,
24 protocol::MessageType type,
41 : app_(app), journal_(app.journal(
"PeerSet"))
58 overlay.foreach([&](
auto const& peer) {
59 auto const score = peer->getScore(hasItem(peer));
66 [](ScoredPeer
const& lhs, ScoredPeer
const& rhs) {
67 return lhs.first > rhs.first;
71 for (
auto const& pair : pairs)
73 auto const peer = pair.second;
74 if (!
peers_.insert(peer->id()).second)
84 ::google::protobuf::Message
const& message,
85 protocol::MessageType type,
144 JLOG(
j_.
error()) <<
"DummyPeerSet addPeers should not be called";
149 ::google::protobuf::Message
const& message,
150 protocol::MessageType type,
153 JLOG(
j_.
error()) <<
"DummyPeerSet sendRequest should not be called";
160 JLOG(
j_.
error()) <<
"DummyPeerSet getPeerIds should not be called";
A generic endpoint for log messages.
virtual Overlay & overlay()=0
DummyPeerSet(Application &app)
void addPeers(std::size_t limit, std::function< bool(std::shared_ptr< Peer > const &)> hasItem, std::function< void(std::shared_ptr< Peer > const &)> onPeerAdded) override
Try add more peers.
void sendRequest(::google::protobuf::Message const &message, protocol::MessageType type, std::shared_ptr< Peer > const &peer) override
std::set< Peer::id_t > const & getPeerIds() const override
get the set of ids of previously added peers
virtual std::shared_ptr< Peer > findPeerByShortID(Peer::id_t const &id) const =0
Returns the peer with the matching short id, or null.
PeerSetBuilderImpl(Application &app)
virtual std::unique_ptr< PeerSet > build() override
std::set< Peer::id_t > peers_
The identifiers of the peers we are tracking.
PeerSetImpl(Application &app)
void addPeers(std::size_t limit, std::function< bool(std::shared_ptr< Peer > const &)> hasItem, std::function< void(std::shared_ptr< Peer > const &)> onPeerAdded) override
Try add more peers.
void sendRequest(::google::protobuf::Message const &message, protocol::MessageType type, std::shared_ptr< Peer > const &peer) override
Send a message to one or all peers.
std::set< Peer::id_t > const & getPeerIds() const override
get the set of ids of previously added peers
Supports data retrieval by managing a set of peers.
T emplace_back(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::unique_ptr< PeerSet > make_DummyPeerSet(Application &app)
Make a dummy PeerSet that does not do anything.
std::unique_ptr< PeerSetBuilder > make_PeerSetBuilder(Application &app)
@ accepted
Manifest is valid.