mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-19 09:25:28 +00:00
65 lines
1.3 KiB
C++
65 lines
1.3 KiB
C++
#ifndef LLARP_DHT_TXOWNER_HPP
|
|
#define LLARP_DHT_TXOWNER_HPP
|
|
|
|
#include <dht/key.hpp>
|
|
#include <util/status.hpp>
|
|
#include <cstdint>
|
|
|
|
namespace llarp
|
|
{
|
|
namespace dht
|
|
{
|
|
struct TXOwner : public util::IStateful
|
|
{
|
|
Key_t node;
|
|
uint64_t txid = 0;
|
|
|
|
TXOwner() = default;
|
|
TXOwner(const TXOwner&) = default;
|
|
TXOwner(TXOwner&&) = default;
|
|
|
|
TXOwner&
|
|
operator=(const TXOwner&) = default;
|
|
|
|
TXOwner(const Key_t& k, uint64_t id) : node(k), txid(id)
|
|
{
|
|
}
|
|
|
|
util::StatusObject
|
|
ExtractStatus() const override
|
|
{
|
|
util::StatusObject obj{
|
|
{"txid", txid},
|
|
{"node", node.ToHex()},
|
|
};
|
|
return obj;
|
|
}
|
|
|
|
bool
|
|
operator==(const TXOwner& other) const
|
|
{
|
|
return std::tie(txid, node) == std::tie(other.txid, other.node);
|
|
}
|
|
|
|
bool
|
|
operator<(const TXOwner& other) const
|
|
{
|
|
return std::tie(txid, node) < std::tie(other.txid, other.node);
|
|
}
|
|
|
|
struct Hash
|
|
{
|
|
std::size_t
|
|
operator()(const TXOwner& o) const noexcept
|
|
{
|
|
std::size_t sz2;
|
|
memcpy(&sz2, &o.node[0], sizeof(std::size_t));
|
|
return o.txid ^ (sz2 << 1);
|
|
}
|
|
};
|
|
};
|
|
} // namespace dht
|
|
} // namespace llarp
|
|
|
|
#endif
|