1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.rubyeye.xmemcached.command.binary;
24
25
26
27
28
29
30
31 public enum ResponseStatus {
32
33 NO_ERROR {
34 @Override
35 public short fieldValue() {
36 return 0x0000;
37 }
38
39 @Override
40 public String errorMessage() {
41 return "No error";
42 }
43 },
44 KEY_NOT_FOUND {
45 @Override
46 public short fieldValue() {
47 return 0x0001;
48 }
49
50 @Override
51 public String errorMessage() {
52 return "Key is not found.";
53 }
54 },
55 KEY_EXISTS {
56 @Override
57 public short fieldValue() {
58 return 0x0002;
59 }
60
61 @Override
62 public String errorMessage() {
63 return "Key is already existed.";
64 }
65 },
66 VALUE_TOO_BIG {
67 @Override
68 public short fieldValue() {
69 return 0x0003;
70 }
71
72 @Override
73 public String errorMessage() {
74 return "Value is too big.";
75 }
76 },
77 INVALID_ARGUMENTS {
78 @Override
79 public short fieldValue() {
80 return 0x0004;
81 }
82
83 @Override
84 public String errorMessage() {
85 return "Invalid arguments.";
86 }
87 },
88 ITEM_NOT_STORED {
89 @Override
90 public short fieldValue() {
91 return 0x0005;
92 }
93
94 @Override
95 public String errorMessage() {
96 return "Item is not stored.";
97 }
98 },
99 INC_DEC_NON_NUM {
100 @Override
101 public short fieldValue() {
102 return 0x0006;
103 }
104
105 @Override
106 public String errorMessage() {
107 return "Incr/Decr on non-numeric value.";
108 }
109 },
110 BELONGS_TO_ANOTHER_SRV {
111 @Override
112 public short fieldValue() {
113 return 0x0007;
114 }
115
116 @Override
117 public String errorMessage() {
118 return "The vbucket belongs to another server.";
119 }
120 },
121 AUTH_ERROR {
122 @Override
123 public short fieldValue() {
124 return 0x0008;
125 }
126
127 @Override
128 public String errorMessage() {
129 return "Authentication error .";
130 }
131 },
132 AUTH_CONTINUE {
133 @Override
134 public short fieldValue() {
135 return 0x0009;
136 }
137
138 @Override
139 public String errorMessage() {
140 return "Authentication continue .";
141 }
142 },
143 UNKNOWN_COMMAND {
144 @Override
145 public short fieldValue() {
146 return 0x0081;
147 }
148
149 @Override
150 public String errorMessage() {
151 return "Unknown command error.";
152 }
153 },
154 OUT_OF_MEMORY {
155 @Override
156 public short fieldValue() {
157 return 0x0082;
158 }
159
160 @Override
161 public String errorMessage() {
162 return "Out of memory .";
163 }
164 },
165 NOT_SUPPORTED {
166 @Override
167 public short fieldValue() {
168 return 0x0083;
169 }
170
171 @Override
172 public String errorMessage() {
173 return "Not supported .";
174 }
175 },
176 INTERNAL_ERROR {
177 @Override
178 public short fieldValue() {
179 return 0x0084;
180 }
181
182 @Override
183 public String errorMessage() {
184 return "Internal error .";
185 }
186 },
187 BUSY {
188 @Override
189 public short fieldValue() {
190 return 0x0085;
191 }
192
193 @Override
194 public String errorMessage() {
195 return "Busy.";
196 }
197 },
198
199 TEMP_FAILURE {
200 @Override
201 public short fieldValue() {
202 return 0x0086;
203 }
204
205 @Override
206 public String errorMessage() {
207 return "Temporary failure .";
208 }
209 },
210
211 AUTH_REQUIRED {
212 @Override
213 public short fieldValue() {
214 return 0x20;
215 }
216
217 @Override
218 public String errorMessage() {
219 return "Authentication required or not successful";
220 }
221 },
222 FUTHER_AUTH_REQUIRED {
223 @Override
224 public short fieldValue() {
225 return 0x21;
226 }
227
228 @Override
229 public String errorMessage() {
230 return "Further authentication steps required. ";
231 }
232 };
233 abstract short fieldValue();
234
235
236
237
238
239
240
241 public static ResponseStatus parseShort(short value) {
242 switch (value) {
243 case 0x0000:
244 return NO_ERROR;
245 case 0x0001:
246 return KEY_NOT_FOUND;
247 case 0x0002:
248 return KEY_EXISTS;
249 case 0x0003:
250 return VALUE_TOO_BIG;
251 case 0x0004:
252 return INVALID_ARGUMENTS;
253 case 0x0005:
254 return ITEM_NOT_STORED;
255 case 0x0006:
256 return INC_DEC_NON_NUM;
257 case 0x0007:
258 return BELONGS_TO_ANOTHER_SRV;
259 case 0x0008:
260 return AUTH_ERROR;
261 case 0x0009:
262 return AUTH_CONTINUE;
263 case 0x0081:
264 return UNKNOWN_COMMAND;
265 case 0x0082:
266 return OUT_OF_MEMORY;
267 case 0x0083:
268 return NOT_SUPPORTED;
269 case 0x0084:
270 return INTERNAL_ERROR;
271 case 0x0085:
272 return BUSY;
273 case 0x0086:
274 return TEMP_FAILURE;
275 case 0x20:
276 return AUTH_REQUIRED;
277 case 0x21:
278 return FUTHER_AUTH_REQUIRED;
279 default:
280 throw new IllegalArgumentException("Unknow Response status:"
281 + value);
282 }
283 }
284
285
286
287
288
289
290 abstract String errorMessage();
291 }