xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
overlay
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
7
#include <google/protobuf/message.h>
8
9
#include <xrpl.pb.h>
10
11
#include <
cstddef
>
12
#include <
functional
>
13
#include <
memory
>
14
#include <
set
>
15
16
namespace
xrpl
{
17
29
class
PeerSet
30
{
31
public
:
32
virtual
~PeerSet
() =
default
;
33
40
virtual
void
41
addPeers
(
42
std::size_t
limit,
43
std::function
<
bool
(
std::shared_ptr<Peer>
const
&)> hasItem,
44
std::function
<
void
(
std::shared_ptr<Peer>
const
&)> onPeerAdded) = 0;
45
49
template
<
typename
MessageType>
50
void
51
sendRequest
(MessageType
const
& message,
std::shared_ptr<Peer>
const
& peer)
52
{
53
this->
sendRequest
(message,
protocolMessageType
(message), peer);
54
}
55
56
virtual
void
57
sendRequest
(
58
::google::protobuf::Message
const
& message,
59
protocol::MessageType type,
60
std::shared_ptr<Peer>
const
& peer) = 0;
61
65
[[nodiscard]]
virtual
std::set<Peer::ID>
const
&
66
getPeerIds
()
const
= 0;
67
};
68
69
class
PeerSetBuilder
70
{
71
public
:
72
virtual
~PeerSetBuilder
() =
default
;
73
74
virtual
std::unique_ptr<PeerSet>
75
build
() = 0;
76
};
77
78
std::unique_ptr<PeerSetBuilder>
79
makePeerSetBuilder
(
Application
& app);
80
86
std::unique_ptr<PeerSet>
87
makeDummyPeerSet
(
Application
& app);
88
89
}
// namespace xrpl
xrpl::Application
Definition
Application.h:94
xrpl::PeerSetBuilder
Definition
PeerSet.h:70
xrpl::PeerSetBuilder::~PeerSetBuilder
virtual ~PeerSetBuilder()=default
xrpl::PeerSetBuilder::build
virtual std::unique_ptr< PeerSet > build()=0
xrpl::PeerSet
Supports data retrieval by managing a set of peers.
Definition
PeerSet.h:30
xrpl::PeerSet::~PeerSet
virtual ~PeerSet()=default
xrpl::PeerSet::sendRequest
void sendRequest(MessageType const &message, std::shared_ptr< Peer > const &peer)
send a message
Definition
PeerSet.h:51
xrpl::PeerSet::addPeers
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.
xrpl::PeerSet::getPeerIds
virtual std::set< Peer::ID > const & getPeerIds() const =0
get the set of ids of previously added peers
xrpl::PeerSet::sendRequest
virtual void sendRequest(::google::protobuf::Message const &message, protocol::MessageType type, std::shared_ptr< Peer > const &peer)=0
cstddef
std::function
functional
memory
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::protocolMessageType
protocol::MessageType protocolMessageType(protocol::TMGetLedger const &)
Definition
ProtocolMessage.h:28
xrpl::makePeerSetBuilder
std::unique_ptr< PeerSetBuilder > makePeerSetBuilder(Application &app)
Definition
PeerSet.cpp:141
xrpl::makeDummyPeerSet
std::unique_ptr< PeerSet > makeDummyPeerSet(Application &app)
Make a dummy PeerSet that does not do anything.
Definition
PeerSet.cpp:184
set
std::shared_ptr
std::size_t
std::unique_ptr
Generated by
1.17.0