1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.netty.handler.codec.mqtt;
18
19
20
21
22 public final class MqttReasonCodes {
23
24 private MqttReasonCodes() {
25 }
26
27
28
29
30 private static <E> E valueOfHelper(byte b, E[] values) {
31 try {
32 return values[b & 0xFF];
33 } catch (ArrayIndexOutOfBoundsException e) {
34 throw new IllegalArgumentException("unknown reason code: " + b);
35 }
36 }
37
38
39
40
41 public enum Disconnect {
42 NORMAL_DISCONNECT((byte) 0x00),
43 DISCONNECT_WITH_WILL_MESSAGE((byte) 0x04),
44 UNSPECIFIED_ERROR((byte) 0x80),
45 MALFORMED_PACKET((byte) 0x81),
46 PROTOCOL_ERROR((byte) 0x82),
47 IMPLEMENTATION_SPECIFIC_ERROR((byte) 0x83),
48 NOT_AUTHORIZED((byte) 0x87),
49 SERVER_BUSY((byte) 0x89),
50 SERVER_SHUTTING_DOWN((byte) 0x8B),
51 KEEP_ALIVE_TIMEOUT((byte) 0x8D),
52 SESSION_TAKEN_OVER((byte) 0x8E),
53 TOPIC_FILTER_INVALID((byte) 0x8F),
54 TOPIC_NAME_INVALID((byte) 0x90),
55 RECEIVE_MAXIMUM_EXCEEDED((byte) 0x93),
56 TOPIC_ALIAS_INVALID((byte) 0x94),
57 PACKET_TOO_LARGE((byte) 0x95),
58 MESSAGE_RATE_TOO_HIGH((byte) 0x96),
59 QUOTA_EXCEEDED((byte) 0x97),
60 ADMINISTRATIVE_ACTION((byte) 0x98),
61 PAYLOAD_FORMAT_INVALID((byte) 0x99),
62 RETAIN_NOT_SUPPORTED((byte) 0x9A),
63 QOS_NOT_SUPPORTED((byte) 0x9B),
64 USE_ANOTHER_SERVER((byte) 0x9C),
65 SERVER_MOVED((byte) 0x9D),
66 SHARED_SUBSCRIPTIONS_NOT_SUPPORTED((byte) 0x9E),
67 CONNECTION_RATE_EXCEEDED((byte) 0x9F),
68 MAXIMUM_CONNECT_TIME((byte) 0xA0),
69 SUBSCRIPTION_IDENTIFIERS_NOT_SUPPORTED((byte) 0xA1),
70 WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED((byte) 0xA2);
71
72 protected static final Disconnect[] VALUES;
73
74 static {
75 Disconnect[] values = values();
76 VALUES = new Disconnect[163];
77 for (Disconnect code : values) {
78 final int unsignedByte = code.byteValue & 0xFF;
79
80 VALUES[unsignedByte] = code;
81 }
82 }
83
84 private final byte byteValue;
85
86 Disconnect(byte byteValue) {
87 this.byteValue = byteValue;
88 }
89
90
91
92
93 public byte byteValue() {
94 return byteValue;
95 }
96
97
98
99
100
101 public static Disconnect valueOf(byte b) {
102 return valueOfHelper(b, VALUES);
103 }
104 }
105
106
107
108
109 public enum Auth {
110 SUCCESS((byte) 0x00),
111 CONTINUE_AUTHENTICATION((byte) 0x18),
112 REAUTHENTICATE((byte) 0x19);
113
114 private static final Auth[] VALUES;
115
116 static {
117 Auth[] values = values();
118 VALUES = new Auth[26];
119 for (Auth code : values) {
120 final int unsignedByte = code.byteValue & 0xFF;
121
122 VALUES[unsignedByte] = code;
123 }
124 }
125
126 private final byte byteValue;
127
128 Auth(byte byteValue) {
129 this.byteValue = byteValue;
130 }
131
132
133
134
135 public byte byteValue() {
136 return byteValue;
137 }
138
139
140
141
142
143 public static Auth valueOf(byte b) {
144 return valueOfHelper(b, VALUES);
145 }
146 }
147
148
149
150
151 public enum PubAck {
152 SUCCESS((byte) 0x00),
153 NO_MATCHING_SUBSCRIBERS((byte) 0x10),
154 UNSPECIFIED_ERROR((byte) 0x80),
155 IMPLEMENTATION_SPECIFIC_ERROR((byte) 0x83),
156 NOT_AUTHORIZED((byte) 0x87),
157 TOPIC_NAME_INVALID((byte) 0x90),
158 PACKET_IDENTIFIER_IN_USE((byte) 0x91),
159 QUOTA_EXCEEDED((byte) 0x97),
160 PAYLOAD_FORMAT_INVALID((byte) 0x99);
161
162 private static final PubAck[] VALUES;
163
164 static {
165 PubAck[] values = values();
166 VALUES = new PubAck[154];
167 for (PubAck code : values) {
168 final int unsignedByte = code.byteValue & 0xFF;
169
170 VALUES[unsignedByte] = code;
171 }
172 }
173
174 private final byte byteValue;
175
176 PubAck(byte byteValue) {
177 this.byteValue = byteValue;
178 }
179
180
181
182
183 public byte byteValue() {
184 return byteValue;
185 }
186
187
188
189
190
191 public static PubAck valueOf(byte b) {
192 return valueOfHelper(b, VALUES);
193 }
194 }
195
196
197
198
199 public enum PubRec {
200 SUCCESS((byte) 0x00),
201 NO_MATCHING_SUBSCRIBERS((byte) 0x10),
202 UNSPECIFIED_ERROR((byte) 0x80),
203 IMPLEMENTATION_SPECIFIC_ERROR((byte) 0x83),
204 NOT_AUTHORIZED((byte) 0x87),
205 TOPIC_NAME_INVALID((byte) 0x90),
206 PACKET_IDENTIFIER_IN_USE((byte) 0x91),
207 QUOTA_EXCEEDED((byte) 0x97),
208 PAYLOAD_FORMAT_INVALID((byte) 0x99);
209
210 private static final PubRec[] VALUES;
211
212 static {
213 PubRec[] values = values();
214 VALUES = new PubRec[154];
215 for (PubRec code : values) {
216 final int unsignedByte = code.byteValue & 0xFF;
217
218 VALUES[unsignedByte] = code;
219 }
220 }
221
222 private final byte byteValue;
223
224 PubRec(byte byteValue) {
225 this.byteValue = byteValue;
226 }
227
228
229
230
231 public byte byteValue() {
232 return byteValue;
233 }
234
235
236
237
238
239 public static PubRec valueOf(byte b) {
240 return valueOfHelper(b, VALUES);
241 }
242 }
243
244
245
246
247 public enum PubRel {
248 SUCCESS((byte) 0x00),
249 PACKET_IDENTIFIER_NOT_FOUND((byte) 0x92);
250
251 private static final PubRel[] VALUES;
252
253 static {
254 PubRel[] values = values();
255 VALUES = new PubRel[147];
256 for (PubRel code : values) {
257 final int unsignedByte = code.byteValue & 0xFF;
258
259 VALUES[unsignedByte] = code;
260 }
261 }
262
263 private final byte byteValue;
264
265 PubRel(byte byteValue) {
266 this.byteValue = byteValue;
267 }
268
269
270
271
272 public byte byteValue() {
273 return byteValue;
274 }
275
276
277
278
279
280 public static PubRel valueOf(byte b) {
281 return valueOfHelper(b, VALUES);
282 }
283 }
284
285
286
287
288 public enum PubComp {
289 SUCCESS((byte) 0x00),
290 PACKET_IDENTIFIER_NOT_FOUND((byte) 0x92);
291
292 private static final PubComp[] VALUES;
293
294 static {
295 PubComp[] values = values();
296 VALUES = new PubComp[147];
297 for (PubComp code : values) {
298 final int unsignedByte = code.byteValue & 0xFF;
299
300 VALUES[unsignedByte] = code;
301 }
302 }
303
304 private final byte byteValue;
305
306 PubComp(byte byteValue) {
307 this.byteValue = byteValue;
308 }
309
310
311
312
313 public byte byteValue() {
314 return byteValue;
315 }
316
317
318
319
320
321 public static PubComp valueOf(byte b) {
322 return valueOfHelper(b, VALUES);
323 }
324 }
325
326
327
328
329 public enum SubAck {
330 GRANTED_QOS_0((byte) 0x00),
331 GRANTED_QOS_1((byte) 0x01),
332 GRANTED_QOS_2((byte) 0x02),
333 UNSPECIFIED_ERROR((byte) 0x80),
334 IMPLEMENTATION_SPECIFIC_ERROR((byte) 0x83),
335 NOT_AUTHORIZED((byte) 0x87),
336 TOPIC_FILTER_INVALID((byte) 0x8F),
337 PACKET_IDENTIFIER_IN_USE((byte) 0x91),
338 QUOTA_EXCEEDED((byte) 0x97),
339 SHARED_SUBSCRIPTIONS_NOT_SUPPORTED((byte) 0x9E),
340 SUBSCRIPTION_IDENTIFIERS_NOT_SUPPORTED((byte) 0xA1),
341 WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED((byte) 0xA2);
342
343 private static final SubAck[] VALUES;
344
345 static {
346 SubAck[] values = values();
347 VALUES = new SubAck[163];
348 for (SubAck code : values) {
349 final int unsignedByte = code.byteValue & 0xFF;
350
351 VALUES[unsignedByte] = code;
352 }
353 }
354
355 private final byte byteValue;
356
357 SubAck(byte byteValue) {
358 this.byteValue = byteValue;
359 }
360
361
362
363
364 public byte byteValue() {
365 return byteValue;
366 }
367
368
369
370
371
372 public static SubAck valueOf(byte b) {
373 return valueOfHelper(b, VALUES);
374 }
375 }
376
377
378
379
380 public enum UnsubAck {
381 SUCCESS((byte) 0x00),
382 NO_SUBSCRIPTION_EXISTED((byte) 0x11),
383 UNSPECIFIED_ERROR((byte) 0x80),
384 IMPLEMENTATION_SPECIFIC_ERROR((byte) 0x83),
385 NOT_AUTHORIZED((byte) 0x87),
386 TOPIC_FILTER_INVALID((byte) 0x8F),
387 PACKET_IDENTIFIER_IN_USE((byte) 0x91);
388
389 private static final UnsubAck[] VALUES;
390
391 static {
392 UnsubAck[] values = values();
393 VALUES = new UnsubAck[146];
394 for (UnsubAck code : values) {
395 final int unsignedByte = code.byteValue & 0xFF;
396
397 VALUES[unsignedByte] = code;
398 }
399 }
400
401 private final byte byteValue;
402
403 UnsubAck(byte byteValue) {
404 this.byteValue = byteValue;
405 }
406
407
408
409
410 public byte byteValue() {
411 return byteValue;
412 }
413
414
415
416
417
418 public static UnsubAck valueOf(byte b) {
419 return valueOfHelper(b, VALUES);
420 }
421 }
422 }