1 module hunt.http.Exceptions;
2 
3 import hunt.http.WebSocketStatusCode;
4 import hunt.Exceptions;
5 
6 
7 
8 /**
9  * 
10  */
11 class SessionInvalidException : RuntimeException {
12     mixin BasicExceptionCtors;
13 }
14 
15 /**
16  * 
17  */
18 class SessionNotFoundException : RuntimeException {
19     mixin BasicExceptionCtors;
20 }
21 
22 
23 
24 class WebSocketException : RuntimeException
25 {
26     mixin BasicExceptionCtors;
27 }
28 
29 class CloseException : WebSocketException
30 {
31     private int statusCode;
32 
33     this(int closeCode, string message, size_t line = __LINE__, string file = __FILE__) {
34         super(message);
35         this.statusCode = closeCode;
36     }
37 
38     this(int closeCode, string message, Throwable cause, size_t line = __LINE__, string file = __FILE__) {
39         super(message, cause);
40         this.statusCode = closeCode;
41     }
42 
43     this(int closeCode, Throwable cause, size_t line = __LINE__, string file = __FILE__) {
44         super(cause);
45         this.statusCode = closeCode;
46     }
47 
48     int getStatusCode() {
49         return statusCode;
50     }
51 
52 }
53 
54 class BadPayloadException : CloseException
55 {    
56     this(string message, size_t line = __LINE__, string file = __FILE__) {
57         super(StatusCode.BAD_PAYLOAD, message, line, file);
58     }
59 
60     this(string message, Throwable t, size_t line = __LINE__, string file = __FILE__) {
61         super(StatusCode.BAD_PAYLOAD, message, t, line, file);
62     }
63 
64     this(Throwable t, size_t line = __LINE__, string file = __FILE__) {
65         super(StatusCode.BAD_PAYLOAD, t, line, file);
66     }
67 }
68 
69 class MessageTooLargeException : CloseException
70 {
71     this(string message, size_t line = __LINE__, string file = __FILE__) {
72         super(StatusCode.MESSAGE_TOO_LARGE, message, line, file);
73     }
74 
75     this(string message, Throwable t, size_t line = __LINE__, string file = __FILE__) {
76         super(StatusCode.MESSAGE_TOO_LARGE, message, t, line, file);
77     }
78 
79     this(Throwable t, size_t line = __LINE__, string file = __FILE__) {
80         super(StatusCode.MESSAGE_TOO_LARGE, t, line, file);
81     }
82 }
83 
84 class ProtocolException : CloseException
85 {
86     this(string message, size_t line = __LINE__, string file = __FILE__) {
87         super(StatusCode.PROTOCOL, message, line, file);
88     }
89 
90     this(string message, Throwable t, size_t line = __LINE__, string file = __FILE__) {
91         super(StatusCode.PROTOCOL, message, t, line, file);
92     }
93 
94     this(Throwable t, size_t line = __LINE__, string file = __FILE__) {
95         super(StatusCode.PROTOCOL, t, line, file);
96     }
97 }