From d39f3ea289e41a347c8c2733fb851240c05442cf Mon Sep 17 00:00:00 2001 From: nathan Date: Sun, 30 Jul 2017 19:50:28 +0200 Subject: [PATCH] Updated UDT to be compilable on Java7. --- .../barchart/udt/nio/SelectorProviderUDT.java | 22 ++-- .../udt/nio/ServerSocketChannelUDT.java | 74 +++++++++--- .../barchart/udt/nio/SocketChannelUDT.java | 114 +++++++++++++----- 3 files changed, 154 insertions(+), 56 deletions(-) diff --git a/src/com/barchart/udt/nio/SelectorProviderUDT.java b/src/com/barchart/udt/nio/SelectorProviderUDT.java index f36c6998..d1bfaf99 100644 --- a/src/com/barchart/udt/nio/SelectorProviderUDT.java +++ b/src/com/barchart/udt/nio/SelectorProviderUDT.java @@ -7,14 +7,15 @@ */ package com.barchart.udt.nio; -import com.barchart.udt.SocketUDT; -import com.barchart.udt.TypeUDT; - import java.io.IOException; +import java.net.ProtocolFamily; import java.nio.channels.DatagramChannel; import java.nio.channels.Pipe; import java.nio.channels.spi.SelectorProvider; +import com.barchart.udt.SocketUDT; +import com.barchart.udt.TypeUDT; + /** * selection provider for UDT *

@@ -26,14 +27,12 @@ public class SelectorProviderUDT extends SelectorProvider { /** * system-wide provider instance, for {@link TypeUDT#DATAGRAM} UDT sockets */ - public static final SelectorProviderUDT DATAGRAM = // - new SelectorProviderUDT(TypeUDT.DATAGRAM); + public static final SelectorProviderUDT DATAGRAM = new SelectorProviderUDT(TypeUDT.DATAGRAM); /** * system-wide provider instance, for {@link TypeUDT#STREAM} UDT sockets */ - public static final SelectorProviderUDT STREAM = // - new SelectorProviderUDT(TypeUDT.STREAM); + public static final SelectorProviderUDT STREAM = new SelectorProviderUDT(TypeUDT.STREAM); public static SelectorProviderUDT from(final TypeUDT type) { switch (type) { @@ -79,6 +78,15 @@ public class SelectorProviderUDT extends SelectorProvider { throw new UnsupportedOperationException("feature not available"); } + /** + * java 7 + */ + @Override + public + DatagramChannel openDatagramChannel(final ProtocolFamily family) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + /** * Not supported. */ diff --git a/src/com/barchart/udt/nio/ServerSocketChannelUDT.java b/src/com/barchart/udt/nio/ServerSocketChannelUDT.java index f66bda2a..d88428fc 100644 --- a/src/com/barchart/udt/nio/ServerSocketChannelUDT.java +++ b/src/com/barchart/udt/nio/ServerSocketChannelUDT.java @@ -7,14 +7,18 @@ */ package com.barchart.udt.nio; -import com.barchart.udt.SocketUDT; -import com.barchart.udt.TypeUDT; -import com.barchart.udt.anno.ThreadSafe; +import java.io.IOException; +import java.net.SocketAddress; +import java.net.SocketOption; +import java.nio.channels.ServerSocketChannel; +import java.util.Set; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.nio.channels.ServerSocketChannel; +import com.barchart.udt.SocketUDT; +import com.barchart.udt.TypeUDT; +import com.barchart.udt.anno.ThreadSafe; /** * {@link ServerSocketChannel}-like wrapper for {@link SocketUDT} can be either @@ -39,22 +43,16 @@ import java.nio.channels.ServerSocketChannel; */ public class ServerSocketChannelUDT extends ServerSocketChannel implements ChannelUDT { - protected static final Logger log = LoggerFactory - .getLogger(ServerSocketChannelUDT.class); + protected static final Logger log = LoggerFactory.getLogger(ServerSocketChannelUDT.class); @ThreadSafe("this") protected NioServerSocketUDT socketAdapter; protected final SocketUDT socketUDT; - protected ServerSocketChannelUDT( // - final SelectorProviderUDT provider, // - final SocketUDT socketUDT // - ) { - + protected ServerSocketChannelUDT(final SelectorProviderUDT provider, final SocketUDT socketUDT) { super(provider); this.socketUDT = socketUDT; - } @Override @@ -83,14 +81,22 @@ public class ServerSocketChannelUDT extends ServerSocketChannel implements Chann } } - @Override + /** + * java 7 + */ + @Override + public + SocketAddress getLocalAddress() throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + @Override protected void implCloseSelectableChannel() throws IOException { socketUDT.close(); } @Override - protected void implConfigureBlocking(final boolean block) - throws IOException { + protected void implConfigureBlocking(final boolean block) throws IOException { socketUDT.setBlocking(block); } @@ -109,6 +115,42 @@ public class ServerSocketChannelUDT extends ServerSocketChannel implements Chann return (SelectorProviderUDT) super.provider(); } + /** + * java 7 + */ + @Override + public + ServerSocketChannel bind(final SocketAddress local, final int backlog) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + ServerSocketChannel setOption(final SocketOption name, final T value) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + T getOption(final SocketOption name) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + Set> supportedOptions() { + throw new UnsupportedOperationException("feature not available"); + } + @Override public synchronized NioServerSocketUDT socket() { if (socketAdapter == null) { diff --git a/src/com/barchart/udt/nio/SocketChannelUDT.java b/src/com/barchart/udt/nio/SocketChannelUDT.java index 6fa4d6bf..aa19673d 100644 --- a/src/com/barchart/udt/nio/SocketChannelUDT.java +++ b/src/com/barchart/udt/nio/SocketChannelUDT.java @@ -7,22 +7,25 @@ */ package com.barchart.udt.nio; -import com.barchart.udt.ExceptionUDT; -import com.barchart.udt.SocketUDT; -import com.barchart.udt.TypeUDT; -import com.barchart.udt.anno.ThreadSafe; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.SocketOption; import java.nio.ByteBuffer; import java.nio.channels.ClosedChannelException; import java.nio.channels.ConnectionPendingException; import java.nio.channels.IllegalBlockingModeException; import java.nio.channels.SocketChannel; import java.nio.channels.UnresolvedAddressException; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.barchart.udt.ExceptionUDT; +import com.barchart.udt.SocketUDT; +import com.barchart.udt.TypeUDT; +import com.barchart.udt.anno.ThreadSafe; /** * {@link SocketChannel}-like wrapper for {@link SocketUDT}, can be either @@ -54,8 +57,7 @@ import java.nio.channels.UnresolvedAddressException; */ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { - protected static final Logger log = LoggerFactory - .getLogger(SocketChannelUDT.class); + protected static final Logger log = LoggerFactory.getLogger(SocketChannelUDT.class); protected final Object connectLock = new Object(); @@ -76,22 +78,13 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { private InetSocketAddress remoteSocket; - protected SocketChannelUDT( // - final SelectorProviderUDT provider, // - final SocketUDT socketUDT // - ) throws ExceptionUDT { - + protected SocketChannelUDT(final SelectorProviderUDT provider, final SocketUDT socketUDT) throws ExceptionUDT { super(provider); this.socketUDT = socketUDT; this.socketUDT.setBlocking(true); } - protected SocketChannelUDT( // - final SelectorProviderUDT provider, // - final SocketUDT socketUDT, // - final boolean isConnected // - ) throws ExceptionUDT { - + protected SocketChannelUDT(final SelectorProviderUDT provider, final SocketUDT socketUDT, final boolean isConnected) throws ExceptionUDT { this(provider, socketUDT); if (isConnected) { @@ -101,7 +94,6 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { isConnectFinished = false; isConnectionPending = true; } - } @Override @@ -240,6 +232,15 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { } + /** + * java 7 + */ + @Override + public + SocketAddress getRemoteAddress() throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + @Override protected void implCloseSelectableChannel() throws IOException { socketUDT.close(); @@ -357,8 +358,7 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { } @Override - public long read(final ByteBuffer[] dsts, final int offset, final int length) - throws IOException { + public long read(final ByteBuffer[] dsts, final int offset, final int length) throws IOException { throw new RuntimeException("feature not available"); } @@ -477,11 +477,9 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { } @Override - public long write(final ByteBuffer[] bufferArray, final int offset, - final int length) throws IOException { + public long write(final ByteBuffer[] bufferArray, final int offset, final int length) throws IOException { try { - long total = 0; for (int index = offset; index < offset + length; index++) { @@ -505,21 +503,71 @@ public class SocketChannelUDT extends SocketChannel implements ChannelUDT { } catch (final Throwable e) { throw new IOException("failed to write buffer array", e); } - } - @Override + /** + * java 7 + */ + @Override + public + SocketAddress getLocalAddress() throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + @Override public TypeUDT typeUDT() { return providerUDT().type(); } /** java 7 */ - public SocketChannelUDT bind(final SocketAddress localAddress) - throws IOException { - + @Override + public SocketChannelUDT bind(final SocketAddress localAddress) throws IOException { socketUDT.bind((InetSocketAddress) localAddress); - return this; - } + + /** + * java 7 + */ + @Override + public + SocketChannel setOption(final SocketOption option, final T value) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + T getOption(final SocketOption name) throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + Set> supportedOptions() { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + SocketChannel shutdownInput() throws IOException { + throw new UnsupportedOperationException("feature not available"); + } + + /** + * java 7 + */ + @Override + public + SocketChannel shutdownOutput() throws IOException { + throw new UnsupportedOperationException("feature not available"); + } }