diff options
Diffstat (limited to 'java/ssl/jdk1.4/IceSSL/ConnectorI.java')
-rw-r--r-- | java/ssl/jdk1.4/IceSSL/ConnectorI.java | 91 |
1 files changed, 89 insertions, 2 deletions
diff --git a/java/ssl/jdk1.4/IceSSL/ConnectorI.java b/java/ssl/jdk1.4/IceSSL/ConnectorI.java index 86055e1d450..8dd8c9ac9c9 100644 --- a/java/ssl/jdk1.4/IceSSL/ConnectorI.java +++ b/java/ssl/jdk1.4/IceSSL/ConnectorI.java @@ -9,8 +9,10 @@ package IceSSL; -final class ConnectorI implements IceInternal.Connector +final class ConnectorI implements IceInternal.Connector, java.lang.Comparable { + final static short TYPE = 2; + public IceInternal.Transceiver connect(int timeout) { @@ -225,23 +227,105 @@ final class ConnectorI implements IceInternal.Connector return new TransceiverI(_instance, fd, connInfo); } + public short + type() + { + return TYPE; + } + public String toString() { return IceInternal.Network.addrToString(_addr); } + public int + hashCode() + { + return _hashCode; + } + // // Only for use by EndpointI // - ConnectorI(Instance instance, java.net.InetSocketAddress addr) + ConnectorI(Instance instance, java.net.InetSocketAddress addr, int timeout, String connectionId) { _instance = instance; _logger = instance.communicator().getLogger(); _host = addr.getHostName(); _addr = addr; + _timeout = timeout; + _connectionId = connectionId; + + _hashCode = _addr.getAddress().getHostAddress().hashCode(); + _hashCode = 5 * _hashCode + _addr.getPort(); + _hashCode = 5 * _hashCode + _timeout; + _hashCode = 5 * _hashCode + _connectionId.hashCode(); } + // + // Compare connectors for sorting purposes + // + public boolean + equals(java.lang.Object obj) + { + return compareTo(obj) == 0; + } + + public int + compareTo(java.lang.Object obj) // From java.lang.Comparable + { + ConnectorI p = null; + + try + { + p = (ConnectorI)obj; + } + catch(ClassCastException ex) + { + try + { + IceInternal.Connector c = (IceInternal.Connector)obj; + return type() < c.type() ? -1 : 1; + } + catch(ClassCastException ee) + { + assert(false); + } + } + + if(this == p) + { + return 0; + } + + if(_timeout < p._timeout) + { + return -1; + } + else if(p._timeout < _timeout) + { + return 1; + } + + if(!_connectionId.equals(p._connectionId)) + { + return _connectionId.compareTo(p._connectionId); + } + + if(_timeout < p._timeout) + { + return -1; + } + else if(p._timeout < _timeout) + { + return 1; + } + + return IceInternal.Network.compareAddress(_addr, p._addr); + } + + private static class ConnectThread extends Thread { ConnectThread(javax.net.ssl.SSLContext ctx, java.net.InetSocketAddress addr) @@ -385,4 +469,7 @@ final class ConnectorI implements IceInternal.Connector private Ice.Logger _logger; private String _host; private java.net.InetSocketAddress _addr; + private int _timeout; + private String _connectionId; + private int _hashCode; } |