[#1036] Use special ConnectTimeoutException if a connection timeout happens while using NIO. Not use it for OIO as it may would break users app that detect SocketTimeoutException here

This commit is contained in:
Norman Maurer 2013-03-27 12:28:02 +01:00
parent 04334dbefb
commit bad316b05f
2 changed files with 35 additions and 1 deletions

View File

@ -0,0 +1,33 @@
/*
* Copyright 2013 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package org.jboss.netty.channel;
import java.net.ConnectException;
/**
* {@link ConnectException} which will be thrown if a connection could
* not be established because of a connection timeout.
*/
public class ConnectTimeoutException extends ConnectException {
private static final long serialVersionUID = 2317065249988317463L;
public ConnectTimeoutException(String msg) {
super(msg);
}
public ConnectTimeoutException() {
}
}

View File

@ -17,6 +17,7 @@ package org.jboss.netty.channel.socket.nio;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ConnectTimeoutException;
import org.jboss.netty.util.ThreadNameDeterminer;
import org.jboss.netty.util.ThreadRenamingRunnable;
import org.jboss.netty.util.Timeout;
@ -133,7 +134,7 @@ public final class NioClientBoss extends AbstractNioSelector implements Boss {
currentTimeNanos >= ch.connectDeadlineNanos) {
if (cause == null) {
cause = new ConnectException("connection timed out: " + ch.requestedRemoteAddress);
cause = new ConnectTimeoutException("connection timed out: " + ch.requestedRemoteAddress);
}
ch.connectFuture.setFailure(cause);