libuav original
Dependents: UAVCAN UAVCAN_Subscriber
ClusterManager Class Reference
This class maintains the cluster state. More...
#include <cluster_manager.hpp>
Inherits uavcan::TimerBase.
Public Member Functions | |
| ClusterManager (INode &node, IStorageBackend &storage, const Log &log, IEventTracer &tracer) | |
| int | init (const uint8_t init_cluster_size, const TransferPriority priority) |
| If cluster_size is set to ClusterSizeUnknown, the class will try to read this parameter from the storage backend using key 'cluster_size'. | |
| void | addServer (NodeID node_id) |
| Adds once server regardless of the discovery logic. | |
| bool | isKnownServer (NodeID node_id) const |
| Whether such server has been discovered. | |
| NodeID | getRemoteServerNodeIDAtIndex (uint8_t index) const |
| An invalid node ID will be returned if there's no such server. | |
| Log::Index | getServerNextIndex (NodeID server_node_id) const |
| See next_index[] in Raft paper. | |
| Log::Index | getServerMatchIndex (NodeID server_node_id) const |
| See match_index[] in Raft paper. | |
| void | resetAllServerIndices () |
| This method must be called when the current server becomes leader. | |
| uint8_t | getNumKnownServers () const |
| Number of known servers can only grow, and it never exceeds the cluster size value. | |
| uint8_t | getClusterSize () const |
| Cluster size and quorum size are constant. | |
Private Member Functions | |
| void | startOneShotWithDeadline (MonotonicTime deadline) |
| Various ways to start the timer - periodically or once. | |
| MonotonicDuration | getPeriod () const |
| Returns period if the timer is in periodic mode. | |
Detailed Description
This class maintains the cluster state.
Definition at line 30 of file cluster_manager.hpp.
Constructor & Destructor Documentation
| ClusterManager | ( | INode & | node, |
| IStorageBackend & | storage, | ||
| const Log & | log, | ||
| IEventTracer & | tracer | ||
| ) |
- Parameters:
-
node Needed to publish and subscribe to Discovery message storage Needed to read the cluster size parameter from the storage log Needed to initialize nextIndex[] values after elections
Definition at line 194 of file cluster_manager.hpp.
Member Function Documentation
| void addServer | ( | NodeID | node_id ) |
Adds once server regardless of the discovery logic.
Definition at line 285 of file cluster_manager.hpp.
| uint8_t getClusterSize | ( | ) | const |
Cluster size and quorum size are constant.
Definition at line 423 of file cluster_manager.hpp.
| uint8_t getNumKnownServers | ( | ) | const |
Number of known servers can only grow, and it never exceeds the cluster size value.
This number does not include the local server.
Definition at line 418 of file cluster_manager.hpp.
| NodeID getRemoteServerNodeIDAtIndex | ( | uint8_t | index ) | const |
An invalid node ID will be returned if there's no such server.
The local server is not listed there.
Definition at line 326 of file cluster_manager.hpp.
| Log::Index getServerMatchIndex | ( | NodeID | server_node_id ) | const |
See match_index[] in Raft paper.
Definition at line 378 of file cluster_manager.hpp.
| Log::Index getServerNextIndex | ( | NodeID | server_node_id ) | const |
See next_index[] in Raft paper.
Definition at line 338 of file cluster_manager.hpp.
| int init | ( | const uint8_t | init_cluster_size, |
| const TransferPriority | priority | ||
| ) |
If cluster_size is set to ClusterSizeUnknown, the class will try to read this parameter from the storage backend using key 'cluster_size'.
Returns negative error code.
Definition at line 210 of file cluster_manager.hpp.
| bool isKnownServer | ( | NodeID | node_id ) | const |
Whether such server has been discovered.
Definition at line 304 of file cluster_manager.hpp.
| void resetAllServerIndices | ( | ) |
This method must be called when the current server becomes leader.
Definition at line 405 of file cluster_manager.hpp.
Generated on Tue Jul 12 2022 17:17:37 by
1.7.2