Search in sources :

Example 1 with ConnectionPendingException

use of java.nio.channels.ConnectionPendingException in project jdk8u_jdk by JetBrains.

the class Connect method doTest.

void doTest() {
    SctpChannel channel = null;
    SctpServerChannel ssc = null;
    try {
        /* Create a server channel to connect to */
        ssc = SctpServerChannel.open().bind(null);
        Set<SocketAddress> addrs = ssc.getAllLocalAddresses();
        if (addrs.isEmpty())
            debug("addrs should not be empty");
        final SocketAddress peerAddress = (InetSocketAddress) addrs.iterator().next();
        channel = SctpChannel.open();
        /* TEST 0.5 Verify default values for new/unconnected channel */
        check(channel.getRemoteAddresses().isEmpty(), "non empty set for unconnected channel");
        check(channel.association() == null, "non-null association for unconnected channel");
        check(!channel.isConnectionPending(), "should not have a connection pending");
        /* TEST 1: non-blocking connect */
        channel.configureBlocking(false);
        if (channel.connect(peerAddress) != true) {
            debug("non-blocking connect did not immediately succeed");
            check(channel.isConnectionPending(), "should return true for isConnectionPending");
            try {
                channel.connect(peerAddress);
                fail("should have thrown ConnectionPendingException");
            } catch (ConnectionPendingException cpe) {
                pass();
            } catch (IOException ioe) {
                unexpected(ioe);
            }
            channel.configureBlocking(true);
            check(channel.finishConnect(), "finishConnect should have returned true");
        }
        ssc.accept();
        ssc.close();
        /* TEST 1.5 Verify after connect */
        check(!channel.getRemoteAddresses().isEmpty(), "empty set for connected channel");
        check(channel.association() != null, "null association for connected channel");
        check(!channel.isConnectionPending(), "pending connection for connected channel");
        /* TEST 2: Verify AlreadyConnectedException thrown */
        try {
            channel.connect(peerAddress);
            fail("should have thrown AlreadyConnectedException");
        } catch (AlreadyConnectedException unused) {
            pass();
        } catch (IOException ioe) {
            unexpected(ioe);
        }
        /* TEST 2.5: Verify AlreadyConnectedException thrown */
        try {
            channel.connect(peerAddress, 5, 5);
            fail("should have thrown AlreadyConnectedException");
        } catch (AlreadyConnectedException unused) {
            pass();
        } catch (IOException ioe) {
            unexpected(ioe);
        }
        /* TEST 3: UnresolvedAddressException */
        channel.close();
        channel = SctpChannel.open();
        InetSocketAddress unresolved = InetSocketAddress.createUnresolved("xxyyzzabc", 4567);
        try {
            channel.connect(unresolved);
            fail("should have thrown UnresolvedAddressException");
        } catch (UnresolvedAddressException unused) {
            pass();
        } catch (IOException ioe) {
            unexpected(ioe);
        }
        /* TEST 4: UnsupportedAddressTypeException */
        SocketAddress unsupported = new UnsupportedSocketAddress();
        try {
            channel.connect(unsupported);
            fail("should have thrown UnsupportedAddressTypeException");
        } catch (UnsupportedAddressTypeException unused) {
            pass();
        } catch (IOException ioe) {
            unexpected(ioe);
        }
        /* TEST 5: ClosedChannelException */
        channel.close();
        final SctpChannel closedChannel = channel;
        testCCE(new Callable<Void>() {

            public Void call() throws IOException {
                closedChannel.connect(peerAddress);
                return null;
            }
        });
        /* TEST 5.5 getRemoteAddresses */
        testCCE(new Callable<Void>() {

            public Void call() throws IOException {
                closedChannel.getRemoteAddresses();
                return null;
            }
        });
        testCCE(new Callable<Void>() {

            public Void call() throws IOException {
                closedChannel.association();
                return null;
            }
        });
        check(!channel.isConnectionPending(), "pending connection for closed channel");
        /* Run some more finishConnect tests */
        /* TEST 6: NoConnectionPendingException */
        channel = SctpChannel.open();
        try {
            channel.finishConnect();
            fail("should have thrown NoConnectionPendingException");
        } catch (NoConnectionPendingException unused) {
            pass();
        } catch (IOException ioe) {
            unexpected(ioe);
        }
        /* TEST 7: ClosedChannelException */
        channel.close();
        final SctpChannel cceChannel = channel;
        testCCE(new Callable<Void>() {

            public Void call() throws IOException {
                cceChannel.finishConnect();
                return null;
            }
        });
        /* TEST 8: IOException: Connection refused. Exercises handleSocketError.
             *         Assumption: no sctp socket listening on 3456 */
        SocketAddress addr = new InetSocketAddress("localhost", 3456);
        channel = SctpChannel.open();
        try {
            channel.connect(addr);
            fail("should have thrown ConnectException: Connection refused");
        } catch (IOException ioe) {
            pass();
        }
    } catch (IOException ioe) {
        unexpected(ioe);
    } finally {
        try {
            if (channel != null)
                channel.close();
        } catch (IOException unused) {
        }
        try {
            if (ssc != null)
                ssc.close();
        } catch (IOException unused) {
        }
    }
}
Also used : SctpChannel(com.sun.nio.sctp.SctpChannel) UnsupportedAddressTypeException(java.nio.channels.UnsupportedAddressTypeException) NoConnectionPendingException(java.nio.channels.NoConnectionPendingException) AlreadyConnectedException(java.nio.channels.AlreadyConnectedException) InetSocketAddress(java.net.InetSocketAddress) NoConnectionPendingException(java.nio.channels.NoConnectionPendingException) ConnectionPendingException(java.nio.channels.ConnectionPendingException) SctpServerChannel(com.sun.nio.sctp.SctpServerChannel) IOException(java.io.IOException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) SocketAddress(java.net.SocketAddress) InetSocketAddress(java.net.InetSocketAddress)

Example 2 with ConnectionPendingException

use of java.nio.channels.ConnectionPendingException in project robovm by robovm.

the class ConnectionPendingExceptionTest method test_Constructor.

/**
     * @tests {@link java.nio.channels.ConnectionPendingException#ConnectionPendingException()}
     */
public void test_Constructor() {
    ConnectionPendingException e = new ConnectionPendingException();
    assertNull(e.getMessage());
    assertNull(e.getLocalizedMessage());
    assertNull(e.getCause());
}
Also used : ConnectionPendingException(java.nio.channels.ConnectionPendingException)

Example 3 with ConnectionPendingException

use of java.nio.channels.ConnectionPendingException in project robovm by robovm.

the class SocketChannelTest method assertSocketAction_NonBlock_BeforeConnect.

private void assertSocketAction_NonBlock_BeforeConnect(Socket s) throws IOException {
    assertFalse(this.channel1.isConnected());
    this.server2 = new ServerSocket(localAddr2.getPort());
    try {
        s.connect(localAddr2);
        fail("Should throw IllegalBlockingModeException");
    } catch (IllegalBlockingModeException e1) {
    // OK.
    }
    if (this.channel1.isConnectionPending()) {
        try {
            s.bind(localAddr2);
            fail("Should throw ConnectionPendingException");
        } catch (ConnectionPendingException e1) {
        // OK.
        }
    } else {
        try {
            s.bind(localAddr2);
            fail("Should throw BindException");
        } catch (BindException e1) {
        // OK.
        }
    }
    assertFalse(this.channel1.isConnected());
    assertFalse(s.isConnected());
    s.close();
    assertTrue(s.isClosed());
    assertFalse(this.channel1.isOpen());
}
Also used : ConnectionPendingException(java.nio.channels.ConnectionPendingException) NoConnectionPendingException(java.nio.channels.NoConnectionPendingException) BindException(java.net.BindException) ServerSocket(java.net.ServerSocket) IllegalBlockingModeException(java.nio.channels.IllegalBlockingModeException)

Example 4 with ConnectionPendingException

use of java.nio.channels.ConnectionPendingException in project netty by netty.

the class ProxyHandler method connect.

@Override
public final void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) throws Exception {
    if (destinationAddress != null) {
        promise.setFailure(new ConnectionPendingException());
        return;
    }
    destinationAddress = remoteAddress;
    ctx.connect(proxyAddress, localAddress, promise);
}
Also used : ConnectionPendingException(java.nio.channels.ConnectionPendingException)

Example 5 with ConnectionPendingException

use of java.nio.channels.ConnectionPendingException in project j2objc by google.

the class SocketChannelImpl method bind.

@Override
public SocketChannel bind(SocketAddress local) throws IOException {
    synchronized (readLock) {
        synchronized (writeLock) {
            synchronized (stateLock) {
                if (!isOpen())
                    throw new ClosedChannelException();
                if (state == ST_PENDING)
                    throw new ConnectionPendingException();
                if (localAddress != null)
                    throw new AlreadyBoundException();
                InetSocketAddress isa = (local == null) ? new InetSocketAddress(0) : Net.checkAddress(local);
                SecurityManager sm = System.getSecurityManager();
                if (sm != null) {
                    sm.checkListen(isa.getPort());
                }
                NetHooks.beforeTcpBind(fd, isa.getAddress(), isa.getPort());
                Net.bind(fd, isa.getAddress(), isa.getPort());
                localAddress = Net.localAddress(fd);
            }
        }
    }
    return this;
}
Also used : ClosedChannelException(java.nio.channels.ClosedChannelException) AlreadyBoundException(java.nio.channels.AlreadyBoundException) InetSocketAddress(java.net.InetSocketAddress) ConnectionPendingException(java.nio.channels.ConnectionPendingException) NoConnectionPendingException(java.nio.channels.NoConnectionPendingException)

Aggregations

ConnectionPendingException (java.nio.channels.ConnectionPendingException)6 NoConnectionPendingException (java.nio.channels.NoConnectionPendingException)3 InetSocketAddress (java.net.InetSocketAddress)2 SctpChannel (com.sun.nio.sctp.SctpChannel)1 SctpServerChannel (com.sun.nio.sctp.SctpServerChannel)1 IOException (java.io.IOException)1 BindException (java.net.BindException)1 ServerSocket (java.net.ServerSocket)1 SocketAddress (java.net.SocketAddress)1 AlreadyBoundException (java.nio.channels.AlreadyBoundException)1 AlreadyConnectedException (java.nio.channels.AlreadyConnectedException)1 ClosedChannelException (java.nio.channels.ClosedChannelException)1 IllegalBlockingModeException (java.nio.channels.IllegalBlockingModeException)1 UnresolvedAddressException (java.nio.channels.UnresolvedAddressException)1 UnsupportedAddressTypeException (java.nio.channels.UnsupportedAddressTypeException)1