diff --git a/pom.xml b/pom.xml index 0fcb659d0f..bf447a224e 100644 --- a/pom.xml +++ b/pom.xml @@ -642,9 +642,11 @@ java.util.zip.Deflater - + java.nio.channels.DatagramChannel java.nio.channels.MembershipKey + java.nio.channels.ServerSocketChannel + java.nio.channels.SocketChannel java.net.StandardProtocolFamily java.nio.channels.spi.SelectorProvider diff --git a/transport/src/main/java/io/netty/channel/socket/nio/NioDatagramChannel.java b/transport/src/main/java/io/netty/channel/socket/nio/NioDatagramChannel.java index ef1a29ed5d..73678a5b9e 100644 --- a/transport/src/main/java/io/netty/channel/socket/nio/NioDatagramChannel.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/NioDatagramChannel.java @@ -189,14 +189,22 @@ public final class NioDatagramChannel @Override protected void doBind(SocketAddress localAddress) throws Exception { - javaChannel().socket().bind(localAddress); + doBind0(localAddress); + } + + private void doBind0(SocketAddress localAddress) throws Exception { + if (PlatformDependent.javaVersion() >= 7) { + javaChannel().bind(localAddress); + } else { + javaChannel().socket().bind(localAddress); + } } @Override protected boolean doConnect(SocketAddress remoteAddress, SocketAddress localAddress) throws Exception { if (localAddress != null) { - javaChannel().socket().bind(localAddress); + doBind0(localAddress); } boolean success = false; diff --git a/transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java b/transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java index ae2d76f94b..5c9ab98c65 100644 --- a/transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/NioServerSocketChannel.java @@ -21,6 +21,7 @@ import io.netty.channel.ChannelOutboundBuffer; import io.netty.channel.nio.AbstractNioMessageChannel; import io.netty.channel.socket.DefaultServerSocketChannelConfig; import io.netty.channel.socket.ServerSocketChannelConfig; +import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -122,7 +123,11 @@ public class NioServerSocketChannel extends AbstractNioMessageChannel @Override protected void doBind(SocketAddress localAddress) throws Exception { - javaChannel().socket().bind(localAddress, config.getBacklog()); + if (PlatformDependent.javaVersion() >= 7) { + javaChannel().bind(localAddress, config.getBacklog()); + } else { + javaChannel().socket().bind(localAddress, config.getBacklog()); + } } @Override diff --git a/transport/src/main/java/io/netty/channel/socket/nio/NioSocketChannel.java b/transport/src/main/java/io/netty/channel/socket/nio/NioSocketChannel.java index 1aeb805487..fb0892ab84 100644 --- a/transport/src/main/java/io/netty/channel/socket/nio/NioSocketChannel.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/NioSocketChannel.java @@ -29,6 +29,7 @@ import io.netty.channel.socket.DefaultSocketChannelConfig; import io.netty.channel.socket.ServerSocketChannel; import io.netty.channel.socket.SocketChannelConfig; import io.netty.util.concurrent.GlobalEventExecutor; +import io.netty.util.internal.PlatformDependent; import java.io.IOException; import java.net.InetSocketAddress; @@ -175,13 +176,38 @@ public class NioSocketChannel extends AbstractNioByteChannel implements io.netty private void shutdownOutput0(final ChannelPromise promise) { try { - javaChannel().socket().shutdownOutput(); + shutdownOutput0(); promise.setSuccess(); } catch (Throwable t) { promise.setFailure(t); } } + private void shutdownOutput0() throws Exception { + if (PlatformDependent.javaVersion() >= 7) { + javaChannel().shutdownOutput(); + } else { + javaChannel().socket().shutdownOutput(); + } + } + + private void shutdownInput0(final ChannelPromise promise) { + try { + shutdownInput0(); + promise.setSuccess(); + } catch (Throwable t) { + promise.setFailure(t); + } + } + + private void shutdownInput0() throws Exception { + if (PlatformDependent.javaVersion() >= 7) { + javaChannel().shutdownInput(); + } else { + javaChannel().socket().shutdownInput(); + } + } + @Override protected SocketAddress localAddress0() { return javaChannel().socket().getLocalSocketAddress(); @@ -194,13 +220,21 @@ public class NioSocketChannel extends AbstractNioByteChannel implements io.netty @Override protected void doBind(SocketAddress localAddress) throws Exception { - javaChannel().socket().bind(localAddress); + doBind0(localAddress); + } + + private void doBind0(SocketAddress localAddress) throws Exception { + if (PlatformDependent.javaVersion() >= 7) { + javaChannel().bind(localAddress); + } else { + javaChannel().socket().bind(localAddress); + } } @Override protected boolean doConnect(SocketAddress remoteAddress, SocketAddress localAddress) throws Exception { if (localAddress != null) { - javaChannel().socket().bind(localAddress); + doBind0(localAddress); } boolean success = false;