Line data Source code
1 : /*
2 : * Package : mqtt_client
3 : * Author : S. Hamblett <steve.hamblett@linux.com>
4 : * Date : 15/06/2017
5 : * Copyright : S.Hamblett
6 : */
7 :
8 : part of mqtt_client;
9 :
10 : /// Factory for generating instances of MQTT Messages
11 : class MqttMessageFactory {
12 : /// Gets an instance of an MqttMessage based on the message type requested.
13 : static MqttMessage getMessage(MqttHeader header,
14 : MqttByteBuffer messageStream) {
15 : MqttMessage message;
16 4 : switch (header.messageType) {
17 4 : case MqttMessageType.connect:
18 4 : message = new MqttConnectMessage.fromByteBuffer(header, messageStream);
19 : break;
20 4 : case MqttMessageType.connectAck:
21 : message =
22 4 : new MqttConnectAckMessage.fromByteBuffer(header, messageStream);
23 : break;
24 4 : case MqttMessageType.publish:
25 2 : message = new MqttPublishMessage.fromByteBuffer(header, messageStream);
26 : break;
27 4 : case MqttMessageType.publishAck:
28 : message =
29 1 : new MqttPublishAckMessage.fromByteBuffer(header, messageStream);
30 : break;
31 4 : case MqttMessageType.publishComplete:
32 : message =
33 1 : new MqttPublishCompleteMessage.fromByteBuffer(header, messageStream);
34 : break;
35 4 : case MqttMessageType.publishReceived:
36 : message =
37 1 : new MqttPublishReceivedMessage.fromByteBuffer(header, messageStream);
38 : break;
39 4 : case MqttMessageType.publishRelease:
40 : message =
41 1 : new MqttPublishReleaseMessage.fromByteBuffer(header, messageStream);
42 : break;
43 4 : case MqttMessageType.subscribe:
44 : message =
45 1 : new MqttSubscribeMessage.fromByteBuffer(header, messageStream);
46 : break;
47 4 : case MqttMessageType.subscribeAck:
48 : message =
49 1 : new MqttSubscribeAckMessage.fromByteBuffer(header, messageStream);
50 : break;
51 4 : case MqttMessageType.unsubscribe:
52 : message =
53 1 : new MqttUnsubscribeMessage.fromByteBuffer(header, messageStream);
54 : break;
55 4 : case MqttMessageType.unsubscribeAck:
56 : message =
57 1 : new MqttUnsubscribeAckMessage.fromByteBuffer(header, messageStream);
58 : break;
59 4 : case MqttMessageType.pingRequest:
60 4 : message = new MqttPingRequestMessage.fromHeader(header);
61 : break;
62 1 : case MqttMessageType.pingResponse:
63 1 : message = new MqttPingResponseMessage.fromHeader(header);
64 : break;
65 1 : case MqttMessageType.disconnect:
66 1 : message = new MqttDisconnectMessage.fromHeader(header);
67 : break;
68 : default:
69 1 : throw new InvalidHeaderException(
70 : "The Message Type specified ($header.messageType) is not a valid "
71 1 : "MQTT Message type or currently not supported.");
72 : }
73 : return message;
74 : }
75 : }
|