Line data Source code
1 : /*
2 : * Package : mqtt_client
3 : * Author : S. Hamblett <steve.hamblett@linux.com>
4 : * Date : 19/06/2017
5 : * Copyright : S.Hamblett
6 : */
7 :
8 : part of mqtt_client;
9 :
10 : /// Implementation of an MQTT Subscribe Ack Message.
11 : class MqttSubscribeAckMessage extends MqttMessage {
12 : /// Gets or sets the variable header contents. Contains extended metadata about the message
13 : MqttSubscribeAckVariableHeader variableHeader;
14 :
15 : /// Gets or sets the payload of the Mqtt Message.
16 : MqttSubscribeAckPayload payload;
17 :
18 : /// Initializes a new instance of the MqttSubscribeAckMessage class.
19 2 : MqttSubscribeAckMessage() {
20 6 : this.header = new MqttHeader().asType(MqttMessageType.subscribeAck);
21 4 : this.variableHeader = new MqttSubscribeAckVariableHeader();
22 4 : this.payload = new MqttSubscribeAckPayload();
23 : }
24 :
25 : /// Initializes a new instance of the MqttSubscribeAckMessage class.
26 : MqttSubscribeAckMessage.fromByteBuffer(MqttHeader header,
27 1 : MqttByteBuffer messageStream) {
28 1 : this.header = header;
29 1 : readFrom(messageStream);
30 : }
31 :
32 : /// Writes the message to the supplied stream.
33 : void writeTo(MqttByteBuffer messageStream) {
34 2 : this.header.writeTo(
35 5 : this.variableHeader.getWriteLength() + this.payload.getWriteLength(),
36 : messageStream);
37 2 : this.variableHeader.writeTo(messageStream);
38 2 : this.payload.writeTo(messageStream);
39 : }
40 :
41 : /// Reads a message from the supplied stream.
42 : void readFrom(MqttByteBuffer messageStream) {
43 1 : this.variableHeader =
44 1 : new MqttSubscribeAckVariableHeader.fromByteBuffer(messageStream);
45 2 : this.payload = new MqttSubscribeAckPayload.fromByteBuffer(
46 2 : header, variableHeader, messageStream);
47 : }
48 :
49 : /// Sets the message identifier on the subscribe message.
50 : MqttSubscribeAckMessage withMessageIdentifier(int messageIdentifier) {
51 4 : this.variableHeader.messageIdentifier = messageIdentifier;
52 : return this;
53 : }
54 :
55 : /// Adds a Qos grant to the message.
56 : MqttSubscribeAckMessage addQosGrant(MqttQos qosGranted) {
57 4 : this.payload.addGrant(qosGranted);
58 : return this;
59 : }
60 :
61 : String toString() {
62 1 : final StringBuffer sb = new StringBuffer();
63 2 : sb.write(super.toString());
64 3 : sb.writeln(variableHeader.toString());
65 3 : sb.writeln(payload.toString());
66 1 : return sb.toString();
67 : }
68 : }
|