mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-11 17:37:53 +00:00
64-bits alignment for RoutingKey
This commit is contained in:
parent
a728d9db5b
commit
eb44fdf7a8
@ -98,12 +98,11 @@ namespace data
|
|||||||
|
|
||||||
XORMetric operator^(const RoutingKey& key1, const RoutingKey& key2)
|
XORMetric operator^(const RoutingKey& key1, const RoutingKey& key2)
|
||||||
{
|
{
|
||||||
// TODO: implementation depends on CPU
|
|
||||||
XORMetric m;
|
XORMetric m;
|
||||||
((uint64_t *)m.metric)[0] = ((uint64_t *)key1.hash)[0] ^ ((uint64_t *)key2.hash)[0];
|
m.metric_ll[0] = key1.hash_ll[0] ^ key2.hash_ll[0];
|
||||||
((uint64_t *)m.metric)[1] = ((uint64_t *)key1.hash)[1] ^ ((uint64_t *)key2.hash)[1];
|
m.metric_ll[1] = key1.hash_ll[1] ^ key2.hash_ll[1];
|
||||||
((uint64_t *)m.metric)[2] = ((uint64_t *)key1.hash)[2] ^ ((uint64_t *)key2.hash)[2];
|
m.metric_ll[2] = key1.hash_ll[2] ^ key2.hash_ll[2];
|
||||||
((uint64_t *)m.metric)[3] = ((uint64_t *)key1.hash)[3] ^ ((uint64_t *)key2.hash)[3];
|
m.metric_ll[3] = key1.hash_ll[3] ^ key2.hash_ll[3];
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
Identity.h
11
Identity.h
@ -78,7 +78,7 @@ namespace data
|
|||||||
bool operator== (const IdentHash& other) const { return !memcmp (m_Hash, other.m_Hash, 32); };
|
bool operator== (const IdentHash& other) const { return !memcmp (m_Hash, other.m_Hash, 32); };
|
||||||
bool operator< (const IdentHash& other) const { return memcmp (m_Hash, other.m_Hash, 32) < 0; };
|
bool operator< (const IdentHash& other) const { return memcmp (m_Hash, other.m_Hash, 32) < 0; };
|
||||||
|
|
||||||
bool FromBase32(const std::string&);
|
bool FromBase32(const std::string&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -89,14 +89,19 @@ namespace data
|
|||||||
void CreateRandomDHKeysPair (DHKeysPair * keys); // for transport sessions
|
void CreateRandomDHKeysPair (DHKeysPair * keys); // for transport sessions
|
||||||
|
|
||||||
// kademlia
|
// kademlia
|
||||||
struct RoutingKey
|
union RoutingKey
|
||||||
{
|
{
|
||||||
uint8_t hash[32];
|
uint8_t hash[32];
|
||||||
|
uint64_t hash_ll[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct XORMetric
|
struct XORMetric
|
||||||
{
|
{
|
||||||
uint8_t metric[32];
|
union
|
||||||
|
{
|
||||||
|
uint8_t metric[32];
|
||||||
|
uint64_t metric_ll[4];
|
||||||
|
};
|
||||||
|
|
||||||
void SetMin () { memset (metric, 0, 32); };
|
void SetMin () { memset (metric, 0, 32); };
|
||||||
void SetMax () { memset (metric, 0xFF, 32); };
|
void SetMax () { memset (metric, 0xFF, 32); };
|
||||||
|
Loading…
Reference in New Issue
Block a user