summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2014-06-13 10:06:29 -0700
committerMark Spruiell <mes@zeroc.com>2014-06-13 10:06:29 -0700
commit69c46db2fb9f03a4b730f8da1bd6e03d4ba68895 (patch)
treea755e1e123ac50a31729e51ebb375a92e86f1303 /java/src
parentSSL Cipher test fix for OpenSSL (diff)
downloadice-69c46db2fb9f03a4b730f8da1bd6e03d4ba68895.tar.bz2
ice-69c46db2fb9f03a4b730f8da1bd6e03d4ba68895.tar.xz
ice-69c46db2fb9f03a4b730f8da1bd6e03d4ba68895.zip
initial commit of C# transport changes
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/ConnectionI.java2
-rw-r--r--java/src/IceInternal/IPEndpointI.java1
-rw-r--r--java/src/IceInternal/OutgoingConnectionFactory.java16
-rw-r--r--java/src/IceInternal/TcpAcceptor.java54
-rw-r--r--java/src/IceInternal/UdpConnector.java2
-rw-r--r--java/src/IceInternal/UdpTransceiver.java10
6 files changed, 37 insertions, 48 deletions
diff --git a/java/src/Ice/ConnectionI.java b/java/src/Ice/ConnectionI.java
index fb2c0ce8a33..a39905470ac 100644
--- a/java/src/Ice/ConnectionI.java
+++ b/java/src/Ice/ConnectionI.java
@@ -2348,7 +2348,7 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
{
return IceInternal.SocketOperation.None;
}
- else if(_state == StateClosingPending && _writeStream.pos() == _writeStream.size())
+ else if(_state == StateClosingPending && _writeStream.pos() == 0)
{
// Message wasn't sent, empty the _writeStream, we're not going to send more data.
OutgoingMessage message = _sendStreams.getFirst();
diff --git a/java/src/IceInternal/IPEndpointI.java b/java/src/IceInternal/IPEndpointI.java
index 7c860106754..e887fb95770 100644
--- a/java/src/IceInternal/IPEndpointI.java
+++ b/java/src/IceInternal/IPEndpointI.java
@@ -151,6 +151,7 @@ public abstract class IPEndpointI extends EndpointI
_hashValue = 5381;
_hashValue = HashUtil.hashAdd(_hashValue, type());
_hashValue = hashInit(_hashValue);
+ _hashInitialized = true;
}
return _hashValue;
}
diff --git a/java/src/IceInternal/OutgoingConnectionFactory.java b/java/src/IceInternal/OutgoingConnectionFactory.java
index 53a1abbfc90..f9e5a50b57a 100644
--- a/java/src/IceInternal/OutgoingConnectionFactory.java
+++ b/java/src/IceInternal/OutgoingConnectionFactory.java
@@ -28,20 +28,6 @@ public final class OutgoingConnectionFactory
list.add(value);
}
- /*
- public void
- removeElementWithValue(K key, V value)
- {
- java.util.List<V> list = this.get(key);
- assert(list != null);
- list.remove(value);
- if(list.isEmpty())
- {
- this.remove(key);
- }
- }
- */
-
public boolean
removeElementWithValue(K key, V value)
{
@@ -54,7 +40,7 @@ public final class OutgoingConnectionFactory
}
return v;
}
- };
+ }
interface CreateConnectionCallback
{
diff --git a/java/src/IceInternal/TcpAcceptor.java b/java/src/IceInternal/TcpAcceptor.java
index d8f35bb625a..ef20c146dac 100644
--- a/java/src/IceInternal/TcpAcceptor.java
+++ b/java/src/IceInternal/TcpAcceptor.java
@@ -11,18 +11,16 @@ package IceInternal;
class TcpAcceptor implements Acceptor
{
- public java.nio.channels.ServerSocketChannel
- fd()
+ public java.nio.channels.ServerSocketChannel fd()
{
return _fd;
}
- public void
- close()
+ public void close()
{
if(_instance.traceLevel() >= 1)
{
- String s = "stopping to accept tcp connections at " + toString();
+ String s = "stopping to accept " + protocol() + " connections at " + toString();
_instance.logger().trace(_instance.traceCategory(), s);
}
@@ -31,17 +29,16 @@ class TcpAcceptor implements Acceptor
_fd = null;
}
- public void
- listen()
+ public void listen()
{
// Nothing to do.
if(_instance.traceLevel() >= 1)
{
- StringBuffer s = new StringBuffer("listening for tcp connections at ");
+ StringBuffer s = new StringBuffer("listening for " + protocol() + " connections at ");
s.append(toString());
- java.util.List<String> interfaces =
+ java.util.List<String> interfaces =
Network.getHostsForEndpointExpand(_addr.getAddress().getHostAddress(), _instance.protocolSupport(),
true);
if(!interfaces.isEmpty())
@@ -53,8 +50,7 @@ class TcpAcceptor implements Acceptor
}
}
- public Transceiver
- accept()
+ public Transceiver accept()
{
java.nio.channels.SocketChannel fd = Network.doAccept(_fd);
Network.setBlock(fd, false);
@@ -62,27 +58,24 @@ class TcpAcceptor implements Acceptor
if(_instance.traceLevel() >= 1)
{
- String s = "accepted tcp connection\n" + Network.fdToString(fd);
+ String s = "accepted " + protocol() + " connection\n" + Network.fdToString(fd);
_instance.logger().trace(_instance.traceCategory(), s);
}
return new TcpTransceiver(_instance, fd);
}
- public String
- protocol()
+ public String protocol()
{
return _instance.protocol();
}
- public String
- toString()
+ public String toString()
{
return Network.addrToString(_addr);
}
- int
- effectivePort()
+ int effectivePort()
{
return _addr.getPort();
}
@@ -100,24 +93,24 @@ class TcpAcceptor implements Acceptor
if(!System.getProperty("os.name").startsWith("Windows"))
{
//
- // Enable SO_REUSEADDR on Unix platforms to allow
- // re-using the socket even if it's in the TIME_WAIT
- // state. On Windows, this doesn't appear to be
- // necessary and enabling SO_REUSEADDR would actually
- // not be a good thing since it allows a second
- // process to bind to an address even it's already
- // bound by another process.
+ // Enable SO_REUSEADDR on Unix platforms to allow re-using the
+ // socket even if it's in the TIME_WAIT state. On Windows,
+ // this doesn't appear to be necessary and enabling
+ // SO_REUSEADDR would actually not be a good thing since it
+ // allows a second process to bind to an address even it's
+ // already bound by another process.
//
- // TODO: using SO_EXCLUSIVEADDRUSE on Windows would
- // probably be better but it's only supported by recent
- // Windows versions (XP SP2, Windows Server 2003).
+ // TODO: using SO_EXCLUSIVEADDRUSE on Windows would probably
+ // be better but it's only supported by recent Windows
+ // versions (XP SP2, Windows Server 2003).
//
Network.setReuseAddress(_fd, true);
}
+
_addr = Network.getAddressForServer(host, port, instance.protocolSupport(), instance.preferIPv6());
if(instance.traceLevel() >= 2)
{
- String s = "attempting to bind to tcp socket " + toString();
+ String s = "attempting to bind to " + protocol() + " socket " + toString();
instance.logger().trace(instance.traceCategory(), s);
}
_addr = Network.doBind(_fd, _addr, _backlog);
@@ -129,8 +122,7 @@ class TcpAcceptor implements Acceptor
}
}
- protected synchronized void
- finalize()
+ protected synchronized void finalize()
throws Throwable
{
try
diff --git a/java/src/IceInternal/UdpConnector.java b/java/src/IceInternal/UdpConnector.java
index 054014efc2c..94ddf2d14cd 100644
--- a/java/src/IceInternal/UdpConnector.java
+++ b/java/src/IceInternal/UdpConnector.java
@@ -38,7 +38,7 @@ final class UdpConnector implements Connector
}
//
- // Only for use by TcpEndpoint
+ // Only for use by UdpEndpointI
//
UdpConnector(ProtocolInstance instance, java.net.InetSocketAddress addr, String mcastInterface, int mcastTtl,
String connectionId)
diff --git a/java/src/IceInternal/UdpTransceiver.java b/java/src/IceInternal/UdpTransceiver.java
index 15f1683cf4e..d8344adb130 100644
--- a/java/src/IceInternal/UdpTransceiver.java
+++ b/java/src/IceInternal/UdpTransceiver.java
@@ -66,6 +66,11 @@ final class UdpTransceiver implements Transceiver
return SocketOperation.Write;
}
+ if(!buf.b.hasRemaining())
+ {
+ return SocketOperation.None;
+ }
+
assert(buf.b.position() == 0);
assert(_fd != null && _state >= StateConnected);
@@ -127,6 +132,11 @@ final class UdpTransceiver implements Transceiver
@SuppressWarnings("deprecation")
public int read(Buffer buf, Ice.BooleanHolder moreData)
{
+ if(!buf.b.hasRemaining())
+ {
+ return SocketOperation.None;
+ }
+
assert(buf.b.position() == 0);
final int packetSize = java.lang.Math.min(_maxPacketSize, _rcvSize - _udpOverhead);