[#4041] Added sessionPresent to MqttConnAckVariableHeader
Motivation: As per http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718033 Modification: Add isSessionPresent() method and constructor to set it Result: Be able to use it with mqtt 3.1.1
This commit is contained in:
parent
a7713069a1
commit
a91e648505
@ -25,19 +25,25 @@ public class MqttConnAckVariableHeader {
|
|||||||
|
|
||||||
private final MqttConnectReturnCode connectReturnCode;
|
private final MqttConnectReturnCode connectReturnCode;
|
||||||
|
|
||||||
public MqttConnAckVariableHeader(MqttConnectReturnCode connectReturnCode) {
|
private final boolean sessionPresent;
|
||||||
|
|
||||||
|
public MqttConnAckVariableHeader(MqttConnectReturnCode connectReturnCode, boolean sessionPresent) {
|
||||||
this.connectReturnCode = connectReturnCode;
|
this.connectReturnCode = connectReturnCode;
|
||||||
|
this.sessionPresent = sessionPresent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MqttConnectReturnCode connectReturnCode() {
|
public MqttConnectReturnCode connectReturnCode() {
|
||||||
return connectReturnCode;
|
return connectReturnCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isSessionPresent() { return sessionPresent; }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new StringBuilder(StringUtil.simpleClassName(this))
|
return new StringBuilder(StringUtil.simpleClassName(this))
|
||||||
.append('[')
|
.append('[')
|
||||||
.append("connectReturnCode=").append(connectReturnCode)
|
.append("connectReturnCode=").append(connectReturnCode)
|
||||||
|
.append(", sessionPresent=").append(sessionPresent)
|
||||||
.append(']')
|
.append(']')
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
@ -236,11 +236,11 @@ public class MqttDecoder extends ReplayingDecoder<DecoderState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Result<MqttConnAckVariableHeader> decodeConnAckVariableHeader(ByteBuf buffer) {
|
private static Result<MqttConnAckVariableHeader> decodeConnAckVariableHeader(ByteBuf buffer) {
|
||||||
buffer.readUnsignedByte(); // reserved byte
|
final boolean sessionPresent = (buffer.readUnsignedByte() & 0x01) == 0x01;
|
||||||
byte returnCode = buffer.readByte();
|
byte returnCode = buffer.readByte();
|
||||||
final int numberOfBytesConsumed = 2;
|
final int numberOfBytesConsumed = 2;
|
||||||
final MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
final MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
||||||
new MqttConnAckVariableHeader(MqttConnectReturnCode.valueOf(returnCode));
|
new MqttConnAckVariableHeader(MqttConnectReturnCode.valueOf(returnCode), sessionPresent);
|
||||||
return new Result<MqttConnAckVariableHeader>(mqttConnAckVariableHeader, numberOfBytesConsumed);
|
return new Result<MqttConnAckVariableHeader>(mqttConnAckVariableHeader, numberOfBytesConsumed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ public class MqttEncoder extends MessageToMessageEncoder<MqttMessage> {
|
|||||||
ByteBuf buf = byteBufAllocator.buffer(4);
|
ByteBuf buf = byteBufAllocator.buffer(4);
|
||||||
buf.writeByte(getFixedHeaderByte1(message.fixedHeader()));
|
buf.writeByte(getFixedHeaderByte1(message.fixedHeader()));
|
||||||
buf.writeByte(2);
|
buf.writeByte(2);
|
||||||
buf.writeByte(0);
|
buf.writeByte(message.variableHeader().sessionPresent() ? 0x01 : 0x00);
|
||||||
buf.writeByte(message.variableHeader().connectReturnCode().byteValue());
|
buf.writeByte(message.variableHeader().connectReturnCode().byteValue());
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
|
@ -289,7 +289,7 @@ public class MqttCodecTest {
|
|||||||
MqttFixedHeader mqttFixedHeader =
|
MqttFixedHeader mqttFixedHeader =
|
||||||
new MqttFixedHeader(MqttMessageType.CONNACK, false, MqttQoS.AT_MOST_ONCE, false, 0);
|
new MqttFixedHeader(MqttMessageType.CONNACK, false, MqttQoS.AT_MOST_ONCE, false, 0);
|
||||||
MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
MqttConnAckVariableHeader mqttConnAckVariableHeader =
|
||||||
new MqttConnAckVariableHeader(MqttConnectReturnCode.CONNECTION_ACCEPTED);
|
new MqttConnAckVariableHeader(MqttConnectReturnCode.CONNECTION_ACCEPTED, true);
|
||||||
return new MqttConnAckMessage(mqttFixedHeader, mqttConnAckVariableHeader);
|
return new MqttConnAckMessage(mqttFixedHeader, mqttConnAckVariableHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user