public MqttConnectMessage build() { MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0); MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader( version.protocolName(), version.protocolLevel(), hasUser, hasPassword, willRetain, willQos.value(), willFlag, cleanSession, keepAliveSecs); MqttConnectPayload mqttConnectPayload = new MqttConnectPayload(clientId, willTopic, willMessage, username, password); return new MqttConnectMessage(mqttFixedHeader, mqttConnectVariableHeader, mqttConnectPayload); } }
numberOfBytesConsumed += 1; final MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(protoString.value, protocolLevel); mqttVersion.protocolName(), mqttVersion.protocolLevel(), hasUserName, hasPassword,
MqttConnectVariableHeader variableHeader = message.variableHeader(); MqttConnectPayload payload = message.payload(); MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(variableHeader.name(), (byte) variableHeader.version()); byte[] protocolNameBytes = mqttVersion.protocolNameBytes(); int variableHeaderBufferSize = 2 + protocolNameBytes.length + 4; int variablePartSize = variableHeaderBufferSize + payloadBufferSize;
private boolean isNotProtocolVersion(MqttConnectMessage msg, MqttVersion version) { return msg.variableHeader().version() != version.protocolLevel(); }
final Result<String> decodedClientId = decodeString(buffer); final String decodedClientIdValue = decodedClientId.value; final MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(mqttConnectVariableHeader.name(), (byte) mqttConnectVariableHeader.version()); if (!isValidClientId(mqttVersion, decodedClientIdValue)) {
public static MqttVersion fromProtocolNameAndLevel(String protocolName, byte protocolLevel) { for (MqttVersion mv : values()) { if (mv.name.equals(protocolName)) { if (mv.level == protocolLevel) { return mv; } else { throw new MqttUnacceptableProtocolVersionException(protocolName + " and " + protocolLevel + " are not match"); } } } throw new MqttUnacceptableProtocolVersionException(protocolName + "is unknown protocol name"); } }
LOG.debug("Processing CONNECT message. CId={}, username={}", clientId, payload.userName()); if (msg.variableHeader().version() != MqttVersion.MQTT_3_1.protocolLevel() && msg.variableHeader().version() != MqttVersion.MQTT_3_1_1.protocolLevel()) { MqttConnAckMessage badProto = connAck(CONNECTION_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION);
@Test public void test() { int l1 = 3; int l2 = 4; assert MqttVersion.fromProtocolNameAndLevel("MQIsdp", (byte) l1) == MqttVersion.MQTT_3_1; assert MqttVersion.fromProtocolNameAndLevel("MQTT", (byte) l2) == MqttVersion.MQTT_3_1_1; } }
public static MqttVersion fromProtocolLevel(byte protocolLevel) { for (MqttVersion mv : values()) { if (mv.level == protocolLevel) { return mv; } } throw new MqttUnacceptableProtocolVersionException(protocolLevel + "is unknown protocol level"); }
private static MqttConnectMessage createConnectMessage(String clientID, int keepAlive) { MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0); MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader( MqttVersion.MQTT_3_1.protocolName(), MqttVersion.MQTT_3_1.protocolLevel(), false, false, false, 1, false, true, keepAlive); MqttConnectPayload mqttConnectPayload = new MqttConnectPayload(clientID, null, null, null, (byte[]) null); return new MqttConnectMessage(mqttFixedHeader, mqttConnectVariableHeader, mqttConnectPayload); }
private static Result<MqttConnectVariableHeader> decodeConnectionVariableHeader(ByteBuf buffer) { final Result<String> protocolName = decodeString(buffer); int numberOfBytesConsumed = protocolName.numberOfBytesConsumed; final byte protocolLevel = buffer.readByte(); numberOfBytesConsumed += 1; final MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(protocolName.value, protocolLevel); final int b1 = buffer.readUnsignedByte(); numberOfBytesConsumed += 1; final Result<Integer> keepAlive = decodeMsbLsb(buffer); numberOfBytesConsumed += keepAlive.numberOfBytesConsumed; final boolean userNameFlag = (b1 & 0x80) == 0x80; final boolean passwordFlag = (b1 & 0x40) == 0x40; final boolean willRetain = (b1 & 0x20) == 0x20; final int willQos = (b1 & 0x18) >> 3; final boolean willFlag = (b1 & 0x04) == 0x04; final boolean cleanSession = (b1 & 0x02) == 0x02; final MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader( mqttVersion.protocolName(), mqttVersion.protocolLevel(), userNameFlag, passwordFlag, willRetain, MqttQoS.valueOf(willQos), willFlag, cleanSession, keepAlive.value); return new Result<>(mqttConnectVariableHeader, numberOfBytesConsumed); }
MqttConnectVariableHeader variableHeader = message.variableHeader(); MqttConnectPayload payload = message.payload(); MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(variableHeader.protocolName(), (byte) variableHeader.protocolLevel()); byte[] protocolNameBytes = mqttVersion.protocolNameBytes(); int variableHeaderBufferSize = 2 + protocolNameBytes.length + 4; int variablePartSize = variableHeaderBufferSize + payloadBufferSize;
private void onConnect(ChannelHandlerContext ctx, MqttConnectMessage msg) { logger.trace("Start handling CONNECT message"); this.version = MqttVersion.fromProtocolNameAndLevel(msg.variableHeader().protocolName(), (byte) msg.variableHeader().protocolLevel()); this.clientId = msg.payload().clientId(); this.cleanSession = msg.variableHeader().cleanSession();
public static MqttVersion fromProtocolNameAndLevel(String protocolName, byte protocolLevel) { for (MqttVersion mv : values()) { if (mv.name.equals(protocolName)) { if (mv.level == protocolLevel) { return mv; } else { throw new MqttUnacceptableProtocolVersionException(protocolName + " and " + protocolLevel + " are not match"); } } } throw new MqttUnacceptableProtocolVersionException(protocolName + "is unknown protocol name"); }
0); MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader( MqttVersion.MQTT_3_1.protocolName(), MqttVersion.MQTT_3_1.protocolLevel(), false, false,
numberOfBytesConsumed += 1; final MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(protoString.value, protocolLevel); mqttVersion.protocolName(), mqttVersion.protocolLevel(), hasUserName, hasPassword,
MqttConnectVariableHeader variableHeader = message.variableHeader(); MqttConnectPayload payload = message.payload(); MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(variableHeader.name(), (byte) variableHeader.version()); byte[] protocolNameBytes = mqttVersion.protocolNameBytes(); int variableHeaderBufferSize = 2 + protocolNameBytes.length + 4; int variablePartSize = variableHeaderBufferSize + payloadBufferSize;
final Result<String> decodedClientId = decodeString(buffer); final String decodedClientIdValue = decodedClientId.value; final MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(mqttConnectVariableHeader.name(), (byte) mqttConnectVariableHeader.version()); if (!isValidClientId(mqttVersion, decodedClientIdValue)) {
public static MqttVersion fromProtocolNameAndLevel(String protocolName, byte protocolLevel) { for (MqttVersion mv : values()) { if (mv.name.equals(protocolName)) { if (mv.level == protocolLevel) { return mv; } else { throw new MqttUnacceptableProtocolVersionException(protocolName + " and " + protocolLevel + " are not match"); } } } throw new MqttUnacceptableProtocolVersionException(protocolName + "is unknown protocol name"); } }
public MqttConnectMessage build() { MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0); MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader( version.protocolName(), version.protocolLevel(), hasUser, hasPassword, willRetain, willQos.value(), willFlag, cleanSession, keepAliveSecs); MqttConnectPayload mqttConnectPayload = new MqttConnectPayload(clientId, willTopic, willMessage, username, password); return new MqttConnectMessage(mqttFixedHeader, mqttConnectVariableHeader, mqttConnectPayload); } }