rippled
Loading...
Searching...
No Matches
PeerSet.h
1#ifndef XRPL_APP_PEERS_PEERSET_H_INCLUDED
2#define XRPL_APP_PEERS_PEERSET_H_INCLUDED
3
4#include <xrpld/app/main/Application.h>
5#include <xrpld/overlay/Peer.h>
6#include <xrpld/overlay/detail/ProtocolMessage.h>
7
8namespace ripple {
9
21{
22public:
23 virtual ~PeerSet() = default;
24
31 virtual void
33 std::size_t limit,
34 std::function<bool(std::shared_ptr<Peer> const&)> hasItem,
35 std::function<void(std::shared_ptr<Peer> const&)> onPeerAdded) = 0;
36
38 template <typename MessageType>
39 void
40 sendRequest(MessageType const& message, std::shared_ptr<Peer> const& peer)
41 {
42 this->sendRequest(message, protocolMessageType(message), peer);
43 }
44
45 virtual void
47 ::google::protobuf::Message const& message,
48 protocol::MessageType type,
49 std::shared_ptr<Peer> const& peer) = 0;
50
52 virtual std::set<Peer::id_t> const&
53 getPeerIds() const = 0;
54};
55
57{
58public:
59 virtual ~PeerSetBuilder() = default;
60
62 build() = 0;
63};
64
67
75
76} // namespace ripple
77
78#endif
virtual ~PeerSetBuilder()=default
virtual std::unique_ptr< PeerSet > build()=0
Supports data retrieval by managing a set of peers.
Definition PeerSet.h:21
virtual std::set< Peer::id_t > const & getPeerIds() const =0
get the set of ids of previously added peers
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.
void sendRequest(MessageType const &message, std::shared_ptr< Peer > const &peer)
send a message
Definition PeerSet.h:40
virtual void sendRequest(::google::protobuf::Message const &message, protocol::MessageType type, std::shared_ptr< Peer > const &peer)=0
virtual ~PeerSet()=default
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
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:168
std::unique_ptr< PeerSetBuilder > make_PeerSetBuilder(Application &app)
Definition PeerSet.cpp:125