rippled
Loading...
Searching...
No Matches
PeerSet.h
1#pragma once
2
3#include <xrpld/app/main/Application.h>
4#include <xrpld/overlay/Peer.h>
5#include <xrpld/overlay/detail/ProtocolMessage.h>
6
7namespace xrpl {
8
20{
21public:
22 virtual ~PeerSet() = default;
23
30 virtual void
32 std::size_t limit,
33 std::function<bool(std::shared_ptr<Peer> const&)> hasItem,
34 std::function<void(std::shared_ptr<Peer> const&)> onPeerAdded) = 0;
35
37 template <typename MessageType>
38 void
39 sendRequest(MessageType const& message, std::shared_ptr<Peer> const& peer)
40 {
41 this->sendRequest(message, protocolMessageType(message), peer);
42 }
43
44 virtual void
46 ::google::protobuf::Message const& message,
47 protocol::MessageType type,
48 std::shared_ptr<Peer> const& peer) = 0;
49
51 virtual std::set<Peer::id_t> const&
52 getPeerIds() const = 0;
53};
54
56{
57public:
58 virtual ~PeerSetBuilder() = default;
59
61 build() = 0;
62};
63
66
74
75} // namespace xrpl
virtual ~PeerSetBuilder()=default
virtual std::unique_ptr< PeerSet > build()=0
Supports data retrieval by managing a set of peers.
Definition PeerSet.h:20
virtual ~PeerSet()=default
virtual std::set< Peer::id_t > const & getPeerIds() const =0
get the set of ids of previously added peers
void sendRequest(MessageType const &message, std::shared_ptr< Peer > const &peer)
send a message
Definition PeerSet.h:39
virtual void addPeers(std::size_t limit, std::function< bool(std::shared_ptr< Peer > const &)> hasItem, std::function< void(std::shared_ptr< Peer > const &)> onPeerAdded)=0
Try add more peers.
virtual void sendRequest(::google::protobuf::Message const &message, protocol::MessageType type, std::shared_ptr< Peer > const &peer)=0
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
protocol::MessageType protocolMessageType(protocol::TMGetLedger const &)
std::unique_ptr< PeerSet > make_DummyPeerSet(Application &app)
Make a dummy PeerSet that does not do anything.
Definition PeerSet.cpp:164
std::unique_ptr< PeerSetBuilder > make_PeerSetBuilder(Application &app)
Definition PeerSet.cpp:121