tor-android/src/com/runjva/sourceforge/jsocks/protocol/SocksException.java

112 lines
2.8 KiB
Java

package com.runjva.sourceforge.jsocks.protocol;
/**
* Exception thrown by various socks classes to indicate errors with protocol or
* unsuccessfull server responses.
*/
public class SocksException extends java.io.IOException {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Construct a SocksException with given errorcode.
* <p>
* Tries to look up message which corresponds to this error code.
*
* @param errCode
* Error code for this exception.
*/
public SocksException(int errCode) {
this.errCode = errCode;
lookupErrorString(errCode);
}
private void lookupErrorString(int errCode) {
if ((errCode >> 16) == 0) {
if (errCode <= serverReplyMessage.length) {
errString = serverReplyMessage[errCode];
} else {
errString = UNASSIGNED_ERROR_MESSAGE;
}
} else {
// Local error
errCode = (errCode >> 16) - 1;
if (errCode <= localErrorMessage.length) {
errString = localErrorMessage[errCode];
} else {
errString = UNASSIGNED_ERROR_MESSAGE;
}
}
}
/**
* Construct a SocksException with given error code, and a Throwable cause
*
* @param errCode
* @param t
* Nested exception for debugging purposes.
*/
public SocksException(int errCode, Throwable t) {
super(t); // Java 1.6+
this.errCode = errCode;
lookupErrorString(errCode);
}
/**
* Constructs a SocksException with given error code and message.
*
* @param errCode
* Error code.
* @param errString
* Error Message.
*/
public SocksException(int errCode, String errString) {
this.errCode = errCode;
this.errString = errString;
}
public SocksException(int errCode, String string, Throwable t) {
super(string, t); // Java 1.6+
this.errCode = errCode;
this.errString = string;
}
/**
* Get the error code associated with this exception.
*
* @return Error code associated with this exception.
*/
public int getErrorCode() {
return errCode;
}
/**
* Get human readable representation of this exception.
*
* @return String represntation of this exception.
*/
public String toString() {
return errString;
}
static final String UNASSIGNED_ERROR_MESSAGE = "Unknown error message";
static final String serverReplyMessage[] = { "Succeeded",
"General SOCKS server failure",
"Connection not allowed by ruleset", "Network unreachable",
"Host unreachable", "Connection refused", "TTL expired",
"Command not supported", "Address type not supported" };
static final String localErrorMessage[] = { "SOCKS server not specified",
"Unable to contact SOCKS server", "IO error",
"None of Authentication methods are supported",
"Authentication failed", "General SOCKS fault" };
String errString;
int errCode;
}// End of SocksException class