xrpld
Loading...
Searching...
No Matches
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
19namespace xrpl {
20
22{
23private:
25 {
26 explicit Comparator() = default;
27
29
30 bool
31 operator()(ClusterNode const& lhs, ClusterNode const& rhs) const
32 {
33 return lhs.identity() < rhs.identity();
34 }
35
36 bool
37 operator()(ClusterNode const& lhs, PublicKey const& rhs) const
38 {
39 return lhs.identity() < rhs;
40 }
41
42 bool
43 operator()(PublicKey const& lhs, ClusterNode const& rhs) const
44 {
45 return lhs < rhs.identity();
46 }
47 };
48
52
53public:
55
63 member(PublicKey const& node) const;
64
69 size() const;
70
77 bool
78 update(
79 PublicKey const& identity,
80 std::string name,
81 std::uint32_t loadFee = 0,
83
89 void
90 forEach(std::function<void(ClusterNode const&)> func) const;
91
103 bool
104 load(Section const& nodes);
105};
106
107} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:44
PublicKey const & identity() const
Definition ClusterNode.h:45
Cluster(beast::Journal j)
Definition Cluster.cpp:26
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:50
std::mutex mutex_
Definition Cluster.h:50
void forEach(std::function< void(ClusterNode const &)> func) const
Invokes the callback once for every cluster node.
Definition Cluster.cpp:76
std::optional< std::string > member(PublicKey const &node) const
Determines whether a node belongs in the cluster.
Definition Cluster.cpp:31
beast::Journal j_
Definition Cluster.h:51
std::set< ClusterNode, Comparator > nodes_
Definition Cluster.h:49
bool load(Section const &nodes)
Load the list of cluster nodes.
Definition Cluster.cpp:84
std::size_t size() const
The number of nodes in the cluster list.
Definition Cluster.cpp:42
std::chrono::time_point< NetClock > time_point
Definition chrono.h:48
A public key.
Definition PublicKey.h:53
Holds a collection of configuration values.
Definition BasicConfig.h:29
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
bool operator()(ClusterNode const &lhs, ClusterNode const &rhs) const
Definition Cluster.h:31
std::true_type is_transparent
Definition Cluster.h:28
bool operator()(ClusterNode const &lhs, PublicKey const &rhs) const
Definition Cluster.h:37
bool operator()(PublicKey const &lhs, ClusterNode const &rhs) const
Definition Cluster.h:43