My Project 2.4.4
C++ Distributed Hash Table
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
dht::Hash< N > Class Template Reference

#include <infohash.h>

Public Types

using T = std::array< uint8_t, N >
 
typedef T::iterator iterator
 
typedef T::const_iterator const_iterator
 

Public Member Functions

 Hash (const uint8_t *h, size_t data_len)
 
 Hash (std::string_view hex)
 
 Hash (const msgpack::object &o)
 
const uint8_t * data () const
 
uint8_t * data ()
 
iterator begin ()
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator cend () const
 
bool operator== (const Hash &h) const
 
bool operator!= (const Hash &h) const
 
bool operator< (const Hash &o) const
 
Hash operator^ (const Hash &o) const
 
 operator bool () const
 
uint8_t & operator[] (size_t index)
 
const uint8_t & operator[] (size_t index) const
 
int lowbit () const
 
int xorCmp (const Hash &id1, const Hash &id2) const
 
bool getBit (unsigned nbit) const
 
void setBit (unsigned nbit, bool b)
 
double toFloat () const
 
const char * to_c_str () const
 
std::string toString () const
 
template<typename Packer >
void msgpack_pack (Packer &pk) const
 
void msgpack_unpack (msgpack::object o)
 
template<typename Rd >
Hash< N > getRandom (Rd &rdev)
 

Static Public Member Functions

static constexpr size_t size () noexcept
 
static constexpr Hash zero () noexcept
 
static int cmp (const Hash &id1, const Hash &id2)
 
static unsigned commonBits (const Hash &id1, const Hash &id2)
 
static Hash get (std::string_view data)
 
static Hash get (const std::vector< uint8_t > &data)
 
static Hash get (const uint8_t *data, size_t data_len)
 
static Hash getRandom ()
 
template<typename Rd >
static Hash getRandom (Rd &)
 

Friends

template<size_t M>
OPENDHT_PUBLIC friend std::ostream & operator<< (std::ostream &s, const Hash< M > &h)
 
template<size_t M>
OPENDHT_PUBLIC friend std::istream & operator>> (std::istream &s, Hash< M > &h)
 

Detailed Description

template<size_t N>
class dht::Hash< N >

Represents an Hash, a byte array of N bytes. Hashes identify nodes and values in the Dht.

Definition at line 64 of file infohash.h.

Member Typedef Documentation

◆ const_iterator

template<size_t N>
typedef T::const_iterator dht::Hash< N >::const_iterator

Definition at line 68 of file infohash.h.

◆ iterator

template<size_t N>
typedef T::iterator dht::Hash< N >::iterator

Definition at line 67 of file infohash.h.

◆ T

template<size_t N>
using dht::Hash< N >::T = std::array<uint8_t, N>

Definition at line 66 of file infohash.h.

Constructor & Destructor Documentation

◆ Hash() [1/4]

template<size_t N>
dht::Hash< N >::Hash ( )
inlinenoexcept

Definition at line 70 of file infohash.h.

◆ Hash() [2/4]

template<size_t N>
dht::Hash< N >::Hash ( const uint8_t *  h,
size_t  data_len 
)
inline

Definition at line 73 of file infohash.h.

◆ Hash() [3/4]

template<size_t N>
dht::Hash< N >::Hash ( std::string_view  hex)
inlineexplicit

Constructor from an hexadecimal string (without "0x"). hex must be at least 2.HASH_LEN characters long. If too long, only the first 2.HASH_LEN characters are read.

Definition at line 84 of file infohash.h.

◆ Hash() [4/4]

template<size_t N>
dht::Hash< N >::Hash ( const msgpack::object &  o)
inline

Definition at line 91 of file infohash.h.

Member Function Documentation

◆ begin()

template<size_t N>
iterator dht::Hash< N >::begin ( )
inline

Definition at line 98 of file infohash.h.

◆ cbegin()

template<size_t N>
const_iterator dht::Hash< N >::cbegin ( ) const
inline

Definition at line 99 of file infohash.h.

◆ cend()

template<size_t N>
const_iterator dht::Hash< N >::cend ( ) const
inline

Definition at line 101 of file infohash.h.

◆ cmp()

template<size_t N>
static int dht::Hash< N >::cmp ( const Hash< N > &  id1,
const Hash< N > &  id2 
)
inlinestatic

Definition at line 162 of file infohash.h.

◆ commonBits()

template<size_t N>
static unsigned dht::Hash< N >::commonBits ( const Hash< N > &  id1,
const Hash< N > &  id2 
)
inlinestatic

Find how many bits two ids have in common.

Definition at line 168 of file infohash.h.

◆ data() [1/2]

template<size_t N>
uint8_t * dht::Hash< N >::data ( )
inline

Definition at line 97 of file infohash.h.

◆ data() [2/2]

template<size_t N>
const uint8_t * dht::Hash< N >::data ( ) const
inline

Definition at line 96 of file infohash.h.

◆ end()

template<size_t N>
iterator dht::Hash< N >::end ( )
inline

Definition at line 100 of file infohash.h.

◆ get() [1/3]

template<size_t N>
static Hash dht::Hash< N >::get ( const std::vector< uint8_t > &  data)
inlinestatic

Definition at line 233 of file infohash.h.

◆ get() [2/3]

template<size_t N>
static Hash dht::Hash< N >::get ( const uint8_t *  data,
size_t  data_len 
)
inlinestatic

Computes the hash from a given data buffer of size data_len.

Definition at line 240 of file infohash.h.

◆ get() [3/3]

template<size_t N>
static Hash dht::Hash< N >::get ( std::string_view  data)
inlinestatic

Definition at line 229 of file infohash.h.

◆ getBit()

template<size_t N>
bool dht::Hash< N >::getBit ( unsigned  nbit) const
inline

Definition at line 206 of file infohash.h.

◆ getRandom() [1/2]

template<size_t N>
Hash< N > dht::Hash< N >::getRandom
static

Definition at line 320 of file infohash.h.

◆ getRandom() [2/2]

template<size_t N>
template<typename Rd >
Hash< N > dht::Hash< N >::getRandom ( Rd &  rdev)

Definition at line 334 of file infohash.h.

◆ lowbit()

template<size_t N>
int dht::Hash< N >::lowbit ( ) const
inline

Find the lowest 1 bit in an id. Result will allways be lower than 8*N

Definition at line 149 of file infohash.h.

◆ msgpack_pack()

template<size_t N>
template<typename Packer >
void dht::Hash< N >::msgpack_pack ( Packer &  pk) const
inline

Definition at line 263 of file infohash.h.

◆ msgpack_unpack()

template<size_t N>
void dht::Hash< N >::msgpack_unpack ( msgpack::object  o)
inline

Definition at line 269 of file infohash.h.

◆ operator bool()

template<size_t N>
dht::Hash< N >::operator bool ( ) const
inlineexplicit

Definition at line 132 of file infohash.h.

◆ operator!=()

template<size_t N>
bool dht::Hash< N >::operator!= ( const Hash< N > &  h) const
inline

Definition at line 114 of file infohash.h.

◆ operator<()

template<size_t N>
bool dht::Hash< N >::operator< ( const Hash< N > &  o) const
inline

Definition at line 116 of file infohash.h.

◆ operator==()

template<size_t N>
bool dht::Hash< N >::operator== ( const Hash< N > &  h) const
inline

Definition at line 105 of file infohash.h.

◆ operator[]() [1/2]

template<size_t N>
uint8_t & dht::Hash< N >::operator[] ( size_t  index)
inline

Definition at line 142 of file infohash.h.

◆ operator[]() [2/2]

template<size_t N>
const uint8_t & dht::Hash< N >::operator[] ( size_t  index) const
inline

Definition at line 143 of file infohash.h.

◆ operator^()

template<size_t N>
Hash dht::Hash< N >::operator^ ( const Hash< N > &  o) const
inline

Definition at line 124 of file infohash.h.

◆ setBit()

template<size_t N>
void dht::Hash< N >::setBit ( unsigned  nbit,
bool  b 
)
inline

Definition at line 214 of file infohash.h.

◆ size()

template<size_t N>
static constexpr size_t dht::Hash< N >::size ( )
inlinestaticconstexprnoexcept

Definition at line 95 of file infohash.h.

◆ to_c_str()

template<size_t N>
const char * dht::Hash< N >::to_c_str

Definition at line 376 of file infohash.h.

◆ toFloat()

template<size_t N>
double dht::Hash< N >::toFloat ( ) const
inline

Definition at line 221 of file infohash.h.

◆ toString()

template<size_t N>
std::string dht::Hash< N >::toString

Definition at line 389 of file infohash.h.

◆ xorCmp()

template<size_t N>
int dht::Hash< N >::xorCmp ( const Hash< N > &  id1,
const Hash< N > &  id2 
) const
inline

Determine whether id1 or id2 is closer to this

Definition at line 193 of file infohash.h.

◆ zero()

template<size_t N>
static constexpr Hash dht::Hash< N >::zero ( )
inlinestaticconstexprnoexcept

Definition at line 103 of file infohash.h.


The documentation for this class was generated from the following file: