12#ifndef WSFCOMMRESERVEDADDRESSING_HPP
13#define WSFCOMMRESERVEDADDRESSING_HPP
16#include <unordered_map>
17#include <unordered_set>
83 std::size_t
operator()(
const std::pair<Address, Address>& aKey)
const
85 auto hash1 = std::hash<Address>{}(aKey.first);
86 auto hash2 = std::hash<Address>{}(aKey.second);
87 auto combineHash1 = hash1 ^ (hash2 << 1);
88 auto combineHash2 = hash2 ^ (hash1 << 1);
90 return std::min(combineHash1, combineHash2);
125 std::vector<UniqueReserved> mImplementations;
Definition WsfCommAddress.hpp:57
Definition WsfCommReservedAddressing.hpp:131
void Initialize() override
Definition WsfCommReservedAddressing.cpp:137
virtual Address QueryAddressByType(const std::string &aReservedType) const
Definition WsfCommReservedAddressing.cpp:79
std::unordered_set< std::pair< Address, Address >, AddressPairHash > ReservedPairSet
Definition WsfCommReservedAddressing.hpp:95
virtual bool IsReservedSimple(const Address &aAddress) const
Checks the simple case of an address/32 collision.
Definition WsfCommReservedAddressing.cpp:56
virtual bool IsReserved(const Address &aAddress) const
Checks if the address/32 value is reserved.
Definition WsfCommReservedAddressing.cpp:20
std::unordered_map< std::string, Address > ReservedTypeMap
Definition WsfCommReservedAddressing.hpp:96
ReservedPairSet mReservedAddressRangeSet
Definition WsfCommReservedAddressing.hpp:99
ReservedTypeMap mReservedTypeToAddressMap
Definition WsfCommReservedAddressing.hpp:100
virtual void Initialize()=0
ReservedAddressingImplementation()=default
ReservedSet mReservedAddressSet
Definition WsfCommReservedAddressing.hpp:98
virtual ~ReservedAddressingImplementation()=default
std::unordered_set< Address > ReservedSet
Definition WsfCommReservedAddressing.hpp:94
void Register(UniqueReserved aImplementation)
Definition WsfCommReservedAddressing.cpp:122
ReservedAddressing()=default
Address QueryAddressByType(const std::string &aReservedType) const
Definition WsfCommReservedAddressing.cpp:106
ReservedAddressing & operator=(const ReservedAddressing &aSrc)=delete
void Initialize()
Definition WsfCommReservedAddressing.cpp:128
std::unique_ptr< ReservedAddressingImplementation > UniqueReserved
Definition WsfCommReservedAddressing.hpp:111
virtual ~ReservedAddressing()=default
ReservedAddressing(const ReservedAddressing &aSrc)=delete
bool IsReserved(const Address &aAddress) const
Definition WsfCommReservedAddressing.cpp:92
Definition WsfCommReservedAddressing.hpp:41
constexpr const char *const cMULTICAST_LAST
Definition WsfCommReservedAddressing.hpp:44
constexpr const char *const cDEFAULT_LAST
Definition WsfCommReservedAddressing.hpp:46
constexpr const char *const cMULTICAST_INITIAL
Definition WsfCommReservedAddressing.hpp:43
constexpr const char *const cOSPF_MULTICAST_DRBR
Definition WsfCommReservedAddressing.hpp:51
constexpr const char *const cMULTICAST_ALL_ROUTERS
Definition WsfCommReservedAddressing.hpp:48
constexpr const char *const cBROADCAST_LOCAL
Definition WsfCommReservedAddressing.hpp:42
constexpr const char *const cMULTICAST_ALL_HOSTS
Definition WsfCommReservedAddressing.hpp:47
constexpr const char *const cRIPv2_MULTICAST
Definition WsfCommReservedAddressing.hpp:49
constexpr const char *const cDEFAULT_INITIAL
Definition WsfCommReservedAddressing.hpp:45
constexpr const char *const cOSPF_MULTICAST_ALL
Definition WsfCommReservedAddressing.hpp:50
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfCommReservedAddressing.hpp:82
std::size_t operator()(const std::pair< Address, Address > &aKey) const
Definition WsfCommReservedAddressing.hpp:83