Merge pull request #2665 from geky/nsapi-socketaddress-equality

nsapi - Add equality operators to SocketAddress class
pull/2734/head
Sam Grove 2016-09-16 17:28:01 -05:00 committed by GitHub
commit 6bfcb3cff0
2 changed files with 31 additions and 0 deletions

View File

@ -258,6 +258,25 @@ SocketAddress::operator bool() const
return false;
}
bool operator==(const SocketAddress &a, const SocketAddress &b)
{
int count = 0;
if (a._addr.version == NSAPI_IPv4 && b._addr.version == NSAPI_IPv4) {
count = NSAPI_IPv4_BYTES;
} else if (a._addr.version == NSAPI_IPv6 && b._addr.version == NSAPI_IPv6) {
count = NSAPI_IPv6_BYTES;
} else {
return false;
}
return (memcmp(a._addr.bytes, b._addr.bytes, count) == 0);
}
bool operator!=(const SocketAddress &a, const SocketAddress &b)
{
return !(a == b);
}
void SocketAddress::_SocketAddress(NetworkStack *iface, const char *host, uint16_t port)
{
_ip_address[0] = '\0';

View File

@ -137,6 +137,18 @@ public:
*/
operator bool() const;
/** Compare two addresses for equality
*
* @return True if both addresses are equal
*/
friend bool operator==(const SocketAddress &a, const SocketAddress &b);
/** Compare two addresses for equality
*
* @return True if both addresses are not equal
*/
friend bool operator!=(const SocketAddress &a, const SocketAddress &b);
private:
void _SocketAddress(NetworkStack *iface, const char *host, uint16_t port);