diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2007-06-07 17:01:30 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2007-06-07 17:01:30 +0000 |
commit | a737fcdae3a825d1a3df353a08df3c12285cde43 (patch) | |
tree | ce5c2f7aed6194cb4d94cb07e00b7380bc320e7b /cpp/src/Ice/TcpConnector.cpp | |
parent | Added missing IComparable (diff) | |
download | ice-a737fcdae3a825d1a3df353a08df3c12285cde43.tar.bz2 ice-a737fcdae3a825d1a3df353a08df3c12285cde43.tar.xz ice-a737fcdae3a825d1a3df353a08df3c12285cde43.zip |
More changes for bug 1996
Diffstat (limited to 'cpp/src/Ice/TcpConnector.cpp')
-rw-r--r-- | cpp/src/Ice/TcpConnector.cpp | 77 |
1 files changed, 75 insertions, 2 deletions
diff --git a/cpp/src/Ice/TcpConnector.cpp b/cpp/src/Ice/TcpConnector.cpp index 9c9b07e5872..312b6ed7e37 100644 --- a/cpp/src/Ice/TcpConnector.cpp +++ b/cpp/src/Ice/TcpConnector.cpp @@ -9,6 +9,7 @@ #include <Ice/TcpConnector.h> #include <Ice/TcpTransceiver.h> +#include <Ice/TcpEndpointI.h> #include <Ice/Instance.h> #include <Ice/TraceLevels.h> #include <Ice/LoggerUtil.h> @@ -42,17 +43,89 @@ IceInternal::TcpConnector::connect(int timeout) return new TcpTransceiver(_instance, fd); } +Short +IceInternal::TcpConnector::type() const +{ + return TcpEndpointType; +} + string IceInternal::TcpConnector::toString() const { return addrToString(_addr); } -IceInternal::TcpConnector::TcpConnector(const InstancePtr& instance, const struct sockaddr_in& addr) : +bool +IceInternal::TcpConnector::operator==(const Connector& r) const +{ + const TcpConnector* p = dynamic_cast<const TcpConnector*>(&r); + if(!p) + { + return false; + } + + if(compareAddress(_addr, p->_addr) != 0) + { + return false; + } + + if(_timeout != p->_timeout) + { + return false; + } + + if(_connectionId != p->_connectionId) + { + return false; + } + + return true; +} + +bool +IceInternal::TcpConnector::operator!=(const Connector& r) const +{ + return !operator==(r); +} + +bool +IceInternal::TcpConnector::operator<(const Connector& r) const +{ + const TcpConnector* p = dynamic_cast<const TcpConnector*>(&r); + if(!p) + { + return type() < r.type(); + } + + if(_timeout < p->_timeout) + { + return true; + } + else if(p->_timeout < _timeout) + { + return false; + } + + if(_connectionId < p->_connectionId) + { + return true; + } + else if(p->_connectionId < _connectionId) + { + return false; + } + + return compareAddress(_addr, p->_addr) == -1; +} + +IceInternal::TcpConnector::TcpConnector(const InstancePtr& instance, const struct sockaddr_in& addr, Ice::Int timeout, + const string& connectionId) : _instance(instance), _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), - _addr(addr) + _addr(addr), + _timeout(timeout), + _connectionId(connectionId) { } |