SF 3538780 SocketAddress needs operator < function

This commit is contained in:
Aleksandar Fabijanic
2012-07-11 02:55:27 +00:00
parent bf4f148782
commit 1bd21292e7
4 changed files with 80 additions and 55 deletions

View File

@@ -90,7 +90,7 @@ public:
/// ///
/// Examples: /// Examples:
/// 192.168.1.10:80 /// 192.168.1.10:80
/// [::FFFF:192.168.1.120]:2040 /// [::ffff:192.168.1.120]:2040
/// www.appinf.com:8080 /// www.appinf.com:8080
SocketAddress(const SocketAddress& addr); SocketAddress(const SocketAddress& addr);
@@ -129,6 +129,7 @@ public:
IPAddress::Family family() const; IPAddress::Family family() const;
/// Returns the address family of the host's address. /// Returns the address family of the host's address.
bool operator < (const SocketAddress& addr) const;
bool operator == (const SocketAddress& addr) const; bool operator == (const SocketAddress& addr) const;
bool operator != (const SocketAddress& addr) const; bool operator != (const SocketAddress& addr) const;

View File

@@ -299,6 +299,14 @@ SocketAddress::~SocketAddress()
} }
bool SocketAddress::operator < (const SocketAddress& addr) const
{
if (family() < addr.family()) return true;
if (host() < addr.host()) return true;
return (port() < addr.port());
}
SocketAddress& SocketAddress::operator = (const SocketAddress& addr) SocketAddress& SocketAddress::operator = (const SocketAddress& addr)
{ {
if (&addr != this) if (&addr != this)

View File

@@ -138,6 +138,20 @@ void SocketAddressTest::testSocketAddress()
} }
void SocketAddressTest::testSocketRelationals()
{
SocketAddress sa1("192.168.1.100", 100);
SocketAddress sa2("192.168.1.100:100");
assert (sa1 == sa2);
SocketAddress sa3("192.168.1.101", "99");
assert (sa2 < sa3);
SocketAddress sa4("192.168.1.100", "102");
assert (sa3 < sa4);
}
void SocketAddressTest::testSocketAddress6() void SocketAddressTest::testSocketAddress6()
{ {
#ifdef POCO_HAVE_IPv6 #ifdef POCO_HAVE_IPv6
@@ -160,6 +174,7 @@ CppUnit::Test* SocketAddressTest::suite()
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SocketAddressTest"); CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SocketAddressTest");
CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress); CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress);
CppUnit_addTest(pSuite, SocketAddressTest, testSocketRelationals);
CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress6); CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress6);
return pSuite; return pSuite;

View File

@@ -47,6 +47,7 @@ public:
~SocketAddressTest(); ~SocketAddressTest();
void testSocketAddress(); void testSocketAddress();
void testSocketRelationals();
void testSocketAddress6(); void testSocketAddress6();
void setUp(); void setUp();