package net.sourceforge.jsocks;
/**
* Exception thrown by various socks classes to indicate errors with protocol or
* unsuccessful server responses.
*/
public class SocksException extends java.io.IOException {
private static final long serialVersionUID = 6141184566248512277L;
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;
public int errCode;
/**
* Construct a SocksException with given error code.
* <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;
if ((errCode >> 16) == 0) {
// Server reply error message
errString = errCode <= serverReplyMessage.length ? serverReplyMessage[errCode]
: UNASSIGNED_ERROR_MESSAGE;
} else {
// Local error
errCode = (errCode >> 16) - 1;
errString = errCode <= localErrorMessage.length ? localErrorMessage[errCode]
: UNASSIGNED_ERROR_MESSAGE;
}
}
/**
* 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;
}
/**
* 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.
*/
@Override
public String toString() {
return errString;
}
}// End of SocksException class