public static int messageId(MqttMessage msg) { return ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); }
private static ByteBuf encodeMessageWithOnlySingleByteFixedHeaderAndMessageId( ByteBufAllocator byteBufAllocator, MqttMessage message) { MqttFixedHeader mqttFixedHeader = message.fixedHeader(); MqttMessageIdVariableHeader variableHeader = (MqttMessageIdVariableHeader) message.variableHeader(); int msgId = variableHeader.messageId(); int variableHeaderBufferSize = 2; // variable part only has a message id int fixedHeaderBufferSize = 1 + getVariableLengthInt(variableHeaderBufferSize); ByteBuf buf = byteBufAllocator.buffer(fixedHeaderBufferSize + variableHeaderBufferSize); buf.writeByte(getFixedHeaderByte1(mqttFixedHeader)); writeVariableLengthInt(buf, variableHeaderBufferSize); buf.writeShort(msgId); return buf; }
private static ByteBuf encodeSubAckMessage( ByteBufAllocator byteBufAllocator, MqttSubAckMessage message) { int variableHeaderBufferSize = 2; int payloadBufferSize = message.payload().grantedQoSLevels().size(); int variablePartSize = variableHeaderBufferSize + payloadBufferSize; int fixedHeaderBufferSize = 1 + getVariableLengthInt(variablePartSize); ByteBuf buf = byteBufAllocator.buffer(fixedHeaderBufferSize + variablePartSize); buf.writeByte(getFixedHeaderByte1(message.fixedHeader())); writeVariableLengthInt(buf, variablePartSize); buf.writeShort(message.variableHeader().messageId()); for (int qos : message.payload().grantedQoSLevels()) { buf.writeByte(qos); } return buf; }
private void processUnsubscribe(MqttUnsubscribeMessage msg) { List<String> topics = msg.payload().topics(); String clientID = NettyUtils.clientID(channel); LOG.trace("Processing UNSUBSCRIBE message. CId={}, topics: {}", clientID, topics); postOffice.unsubscribe(topics, this, msg.variableHeader().messageId()); }
private void processPubComp(MqttMessage msg) { final int messageID = ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); final Session session = sessionRegistry.retrieve(getClientId()); session.processPubComp(messageID); }
private void processPubRec(MqttMessage msg) { final int messageID = ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); final Session session = sessionRegistry.retrieve(getClientId()); session.processPubRec(messageID); }
private void processPubAck(MqttMessage msg) { final int messageID = ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); Session session = sessionRegistry.retrieve(getClientId()); session.pubAckReceived(messageID); }
private static ByteBuf encodeUnsubscribeMessage( ByteBufAllocator byteBufAllocator, MqttUnsubscribeMessage message) { int variableHeaderBufferSize = 2; int payloadBufferSize = 0; MqttFixedHeader mqttFixedHeader = message.fixedHeader(); MqttMessageIdVariableHeader variableHeader = message.variableHeader(); MqttUnsubscribePayload payload = message.payload(); for (String topicName : payload.topics()) { byte[] topicNameBytes = encodeStringUtf8(topicName); payloadBufferSize += 2 + topicNameBytes.length; } int variablePartSize = variableHeaderBufferSize + payloadBufferSize; int fixedHeaderBufferSize = 1 + getVariableLengthInt(variablePartSize); ByteBuf buf = byteBufAllocator.buffer(fixedHeaderBufferSize + variablePartSize); buf.writeByte(getFixedHeaderByte1(mqttFixedHeader)); writeVariableLengthInt(buf, variablePartSize); // Variable Header int messageId = variableHeader.messageId(); buf.writeShort(messageId); // Payload for (String topicName : payload.topics()) { byte[] topicNameBytes = encodeStringUtf8(topicName); buf.writeShort(topicNameBytes.length); buf.writeBytes(topicNameBytes, 0, topicNameBytes.length); } return buf; }
private void processPubRel(MqttMessage msg) { final Session session = sessionRegistry.retrieve(getClientId()); final int messageID = ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); session.receivedPubRelQos2(messageID); sendPubCompMessage(messageID); }
int messageId = variableHeader.messageId(); buf.writeShort(messageId);
protected void unsubscribeAndVerifyAck(String topic) { final int messageId = 1; sut.unsubscribe(Collections.singletonList(topic), connection, messageId); MqttUnsubAckMessage unsubAckMessageAck = channel.readOutbound(); assertEquals("Unsubscribe must be accepted", messageId, unsubAckMessageAck.variableHeader().messageId()); }
public static MqttSubAckMessage getMqttSubackMessage(MqttSubscribeMessage message, MqttSubAckPayload payload) { MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.SUBACK, false, message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), 0 ); MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(message.variableHeader().messageId()); return new MqttSubAckMessage(fixedHeader, variableHeader, payload); }
public static MqttUnsubAckMessage getMqttUnsubackMessage(MqttUnsubscribeMessage message) { MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.UNSUBACK, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), 0 ); MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(message.variableHeader().messageId()); return new MqttUnsubAckMessage(fixedHeader, variableHeader); }
public void suback(Channel channel,MqttSubAckMessage mqttMessage) { ScheduledFuture<?> scheduledFuture = channel.attr(getKey(Integer.toString(mqttMessage.variableHeader().messageId()))).get(); if(scheduledFuture!=null){ scheduledFuture.cancel(true); } } //qos1 send
@Override public void puback(Channel channel, MqttMessage mqttMessage) { MqttMessageIdVariableHeader messageIdVariableHeader = (MqttMessageIdVariableHeader) mqttMessage.variableHeader(); int messageId = messageIdVariableHeader.messageId(); Optional.ofNullable(Cache.del(messageId)).ifPresent(sendMqttMessage -> { sendMqttMessage.setConfirmStatus(ConfirmStatus.COMPLETE); }); }
@Override public void pubcomp(Channel channel,MqttMessage mqttMessage ) { MqttMessageIdVariableHeader messageIdVariableHeader = (MqttMessageIdVariableHeader) mqttMessage.variableHeader(); int messageId = messageIdVariableHeader.messageId(); Optional.ofNullable(Cache.del(messageId)).ifPresent(sendMqttMessage -> { sendMqttMessage.setConfirmStatus(ConfirmStatus.COMPLETE); }); }
@Override public void pubrel(Channel channel, MqttMessage mqttMessage ) { MqttMessageIdVariableHeader messageIdVariableHeader = (MqttMessageIdVariableHeader) mqttMessage.variableHeader(); int messageId = messageIdVariableHeader.messageId(); MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBCOMP,false, MqttQoS.AT_MOST_ONCE,false,0x02); MqttMessageIdVariableHeader from = MqttMessageIdVariableHeader.from(messageId); MqttMessage mqttPubAckMessage = new MqttMessage(mqttFixedHeader,from); Optional.ofNullable(Cache.del(messageId)).ifPresent(sendMqttMessage -> { sendMqttMessage.setConfirmStatus(ConfirmStatus.COMPLETE); }); channel.writeAndFlush(mqttPubAckMessage); }
/** * qos2 发布收到 */ @Override public void pubrec(Channel channel, MqttMessage mqttMessage ) { MqttMessageIdVariableHeader messageIdVariableHeader = (MqttMessageIdVariableHeader) mqttMessage.variableHeader(); int messageId = messageIdVariableHeader.messageId(); Optional.ofNullable(mqttChannelService.getMqttChannel(mqttChannelService.getDeviceId(channel)).getSendMqttMessage(messageId)) .ifPresent(msg->msg.setConfirmStatus(ConfirmStatus.PUBREL)); // 复制为空 mqttChannelService.doPubrec(channel, messageId); }
/** * qos2 发布释放 */ @Override public void pubrel(Channel channel, MqttMessage mqttMessage ) { MqttMessageIdVariableHeader mqttMessageIdVariableHeader = (MqttMessageIdVariableHeader) mqttMessage.variableHeader(); int messageId = mqttMessageIdVariableHeader.messageId(); Optional.ofNullable(mqttChannelService.getMqttChannel(mqttChannelService.getDeviceId(channel)) .getSendMqttMessage(messageId) ).ifPresent(msg-> msg .setConfirmStatus(ConfirmStatus.COMPLETE)); mqttChannelService.doPubrel(channel, messageId); }
private void subBack(Channel channel, MqttSubscribeMessage mqttSubscribeMessage, int num) { MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.SUBACK, false, MqttQoS.AT_MOST_ONCE, false, 0); MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(mqttSubscribeMessage.variableHeader().messageId()); List<Integer> grantedQoSLevels = new ArrayList<>(num); for (int i = 0; i < num; i++) { grantedQoSLevels.add(mqttSubscribeMessage.payload().topicSubscriptions().get(i).qualityOfService().value()); } MqttSubAckPayload payload = new MqttSubAckPayload(grantedQoSLevels); MqttSubAckMessage mqttSubAckMessage = new MqttSubAckMessage(mqttFixedHeader, variableHeader, payload); channel.writeAndFlush(mqttSubAckMessage); }