xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
overlay
Cluster.h
1
#pragma once
2
3
#include <xrpld/overlay/ClusterNode.h>
4
5
#include <xrpl/basics/chrono.h>
6
#include <xrpl/beast/utility/Journal.h>
7
#include <xrpl/config/BasicConfig.h>
8
#include <xrpl/protocol/PublicKey.h>
9
10
#include <
cstddef
>
11
#include <
cstdint
>
12
#include <
functional
>
13
#include <
mutex
>
14
#include <
optional
>
15
#include <
set
>
16
#include <
string
>
17
#include <
type_traits
>
18
19
namespace
xrpl
{
20
21
class
Cluster
22
{
23
private
:
24
struct
Comparator
25
{
26
explicit
Comparator
() =
default
;
27
28
// NOLINTNEXTLINE(readability-identifier-naming) -- std heterogeneous-lookup concept name
29
using
is_transparent
=
std::true_type
;
30
31
bool
32
operator()
(
ClusterNode
const
& lhs,
ClusterNode
const
& rhs)
const
33
{
34
return
lhs.
identity
() < rhs.
identity
();
35
}
36
37
bool
38
operator()
(
ClusterNode
const
& lhs,
PublicKey
const
& rhs)
const
39
{
40
return
lhs.
identity
() < rhs;
41
}
42
43
bool
44
operator()
(
PublicKey
const
& lhs,
ClusterNode
const
& rhs)
const
45
{
46
return
lhs < rhs.
identity
();
47
}
48
};
49
50
std::set<ClusterNode, Comparator>
nodes_
;
51
std::mutex
mutable
mutex_
;
52
beast::Journal
mutable
j_
;
53
54
public
:
55
Cluster
(
beast::Journal
j);
56
63
std::optional<std::string>
64
member
(
PublicKey
const
& node)
const
;
65
76
bool
77
isMember
(
PublicKey
const
& node)
const
;
78
82
std::size_t
83
size
()
const
;
84
91
bool
92
update
(
93
PublicKey
const
& identity,
94
std::string
name,
95
std::uint32_t
loadFee = 0,
96
NetClock::time_point
reportTime =
NetClock::time_point
{});
97
103
void
104
forEach
(
std::function
<
void
(
ClusterNode
const
&)> func)
const
;
105
117
bool
118
load
(
Section
const
& nodes);
119
};
120
121
}
// namespace xrpl
std::string
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::ClusterNode
Definition
ClusterNode.h:13
xrpl::ClusterNode::identity
PublicKey const & identity() const
Definition
ClusterNode.h:45
xrpl::Cluster::Cluster
Cluster(beast::Journal j)
Definition
Cluster.cpp:26
xrpl::Cluster::update
bool update(PublicKey const &identity, std::string name, std::uint32_t loadFee=0, NetClock::time_point reportTime=NetClock::time_point{})
Store information about the state of a cluster node.
Definition
Cluster.cpp:58
xrpl::Cluster::mutex_
std::mutex mutex_
Definition
Cluster.h:51
xrpl::Cluster::forEach
void forEach(std::function< void(ClusterNode const &)> func) const
Invokes the callback once for every cluster node.
Definition
Cluster.cpp:84
xrpl::Cluster::member
std::optional< std::string > member(PublicKey const &node) const
Determines whether a node belongs in the cluster.
Definition
Cluster.cpp:31
xrpl::Cluster::isMember
bool isMember(PublicKey const &node) const
Determines whether a node belongs in the cluster.
Definition
Cluster.cpp:42
xrpl::Cluster::j_
beast::Journal j_
Definition
Cluster.h:52
xrpl::Cluster::nodes_
std::set< ClusterNode, Comparator > nodes_
Definition
Cluster.h:50
xrpl::Cluster::load
bool load(Section const &nodes)
Load the list of cluster nodes.
Definition
Cluster.cpp:92
xrpl::Cluster::size
std::size_t size() const
The number of nodes in the cluster list.
Definition
Cluster.cpp:50
xrpl::NetClock::time_point
std::chrono::time_point< NetClock > time_point
Definition
chrono.h:48
xrpl::PublicKey
A public key.
Definition
PublicKey.h:53
xrpl::Section
Holds a collection of configuration values.
Definition
BasicConfig.h:28
cstddef
cstdint
std::function
functional
std::uint32_t
std::true_type
mutex
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
optional
set
std::size_t
string
xrpl::Cluster::Comparator::operator()
bool operator()(ClusterNode const &lhs, ClusterNode const &rhs) const
Definition
Cluster.h:32
xrpl::Cluster::Comparator::is_transparent
std::true_type is_transparent
Definition
Cluster.h:29
xrpl::Cluster::Comparator::operator()
bool operator()(ClusterNode const &lhs, PublicKey const &rhs) const
Definition
Cluster.h:38
xrpl::Cluster::Comparator::operator()
bool operator()(PublicKey const &lhs, ClusterNode const &rhs) const
Definition
Cluster.h:44
xrpl::Cluster::Comparator::Comparator
Comparator()=default
type_traits
Generated by
1.17.0