16d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Finkpackage fi.iki.elonen;
26d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
36d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Finkimport fi.iki.elonen.WebSocketFrame.CloseCode;
46d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
56d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Finkimport java.io.IOException;
66d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
76d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Finkpublic class WebSocketException extends IOException {
86d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    private CloseCode code;
96d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    private String reason;
106d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
116d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    public WebSocketException(Exception cause) {
126d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        this(CloseCode.InternalServerError, cause.toString(), cause);
136d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    }
146d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
156d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    public WebSocketException(CloseCode code, String reason) {
166d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        this(code, reason, null);
176d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    }
186d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
196d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    public WebSocketException(CloseCode code, String reason, Exception cause) {
206d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        super(code + ": " + reason, cause);
216d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        this.code = code;
226d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        this.reason = reason;
236d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    }
246d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
256d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    public CloseCode getCode() {
266d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        return code;
276d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    }
286d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink
296d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    public String getReason() {
306d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink        return reason;
316d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink    }
326d3737c76afdb1c991bf8d96e3dd2cc622435f09Niko Fink}
33