1#include <xrpld/app/main/Application.h>
2#include <xrpld/core/JobQueue.h>
3#include <xrpld/overlay/Overlay.h>
4#include <xrpld/overlay/PeerSet.h>
22 ::google::protobuf::Message
const& message,
23 protocol::MessageType type,
40 : app_(app), journal_(app.journal(
"PeerSet"))
57 overlay.foreach([&](
auto const& peer) {
58 auto const score = peer->getScore(hasItem(peer));
65 [](ScoredPeer
const& lhs, ScoredPeer
const& rhs) {
66 return lhs.first > rhs.first;
70 for (
auto const& pair : pairs)
72 auto const peer = pair.second;
73 if (!
peers_.insert(peer->id()).second)
83 ::google::protobuf::Message
const& message,
84 protocol::MessageType type,
143 JLOG(
j_.
error()) <<
"DummyPeerSet addPeers should not be called";
148 ::google::protobuf::Message
const& message,
149 protocol::MessageType type,
152 JLOG(
j_.
error()) <<
"DummyPeerSet sendRequest should not be called";
159 JLOG(
j_.
error()) <<
"DummyPeerSet getPeerIds should not be called";
A generic endpoint for log messages.
virtual Overlay & overlay()=0
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
DummyPeerSet(Application &app)
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.
virtual std::unique_ptr< PeerSet > build() override
PeerSetBuilderImpl(Application &app)
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 > peers_
The identifiers of the peers we are tracking.
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.