RendezvousHash class
#include <eckit/utils/RendezvousHash.h>
This class implements the Rendezvous or Highest Random Weight (HRW) hashing It is thread-safe, in terms that threads can add and remove nodes whilts others can compute the hash and obtain the rendezvous node
Public types
-
using Node = std::
string -
using Key = std::
map<std:: string, std:: string> -
using hash_func_ptr = std::
string(*)(const std:: string&)
Public static functions
-
static auto md5(const std::
string& str) -> std:: string
Constructors, destructors, conversion operators
- RendezvousHash(const hash_func_ptr hash = &md5)
-
RendezvousHash(const std::
vector<Node>& nodes, const hash_func_ptr hash = &md5) - RendezvousHash(const RendezvousHash&) deleted
- RendezvousHash(RendezvousHash&&) deleted
- ~RendezvousHash()
Public functions
- auto operator=(const RendezvousHash&) -> RendezvousHash& deleted
- auto operator=(RendezvousHash&&) -> RendezvousHash& deleted
-
void hashOrder(const Key& key,
std::
vector<Node>& nodes) - Provide a list of nodes / indices in the list of nodes for the given key.
-
void hashOrder(const Key& key,
std::
vector<size_t>& indices) - auto addNode(const Node& node) -> bool
- auto removeNode(const Node& node) -> bool
Function documentation
bool eckit:: RendezvousHash:: removeNode(const Node& node)
| Returns | true is node removal was successful |
|---|
Removes node from node list. No effect if node not present