18#define USE_OPENVPN_HASH
21#if XXH_VERSION_NUMBER < 700
22#error requires XXHash version 0.7.0 or higher
30#define OPENVPN_HASH_METHOD(T, meth) \
35 inline std::uint64_t operator()(const T &obj) const \
42#ifdef USE_OPENVPN_HASH
49 Hash64(
const std::uint64_t init_hashval = 0)
50 : hashval(init_hashval)
54 void operator()(
const void *data,
const std::size_t size)
56 hashval = XXH3_64bits_withSeed((
const char *)data, size, hashval);
59 void operator()(
const std::string &
str)
61 (*this)(
str.c_str(),
str.length());
65 inline void operator()(
const T &obj)
67 static_assert(std::is_standard_layout_v<T>,
"Hash64: standard layout required");
68 (*this)(&obj,
sizeof(obj));
71 std::uint64_t value()
const
76 std::string to_string()
const
78 return render_hex_number(hashval);
82 std::uint64_t hashval;
os<< "Session Name: "<< tbc-> session_name<< '\n';os<< "Layer: "<< tbc-> layer str()<< '\n'