diff src/net/sourceforge/jsocks/SocksException.java @ 0:0ce5cc452d02

initial version
author Carl Byington <carl@five-ten-sg.com>
date Thu, 22 May 2014 10:41:19 -0700
parents
children 205ee2873330
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/sourceforge/jsocks/SocksException.java	Thu May 22 10:41:19 2014 -0700
@@ -0,0 +1,84 @@
+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;
+
+    /**
+     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.
+    */
+    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;
+    public int errCode;
+
+}//End of SocksException class
+