Refine search
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; }
void sendUnsubAckMessage(List<String> topics, String clientID, int messageID) { MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.UNSUBACK, false, AT_MOST_ONCE, false, 0); MqttUnsubAckMessage ackMessage = new MqttUnsubAckMessage(fixedHeader, from(messageID)); LOG.trace("Sending UNSUBACK message. CId={}, messageId: {}, topics: {}", clientID, messageID, topics); channel.writeAndFlush(ackMessage).addListener(FIRE_EXCEPTION_ON_FAILURE); LOG.trace("Client <{}> unsubscribed from topics <{}>", clientID, topics); }
public static MqttMessageIdVariableHeader from(int messageId) { if (messageId < 1 || messageId > 0xffff) { throw new IllegalArgumentException("messageId: " + messageId + " (expected: 1 ~ 65535)"); } return new MqttMessageIdVariableHeader(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); }
log.append(message.fixedHeader().messageType().toString()); log.append("(" + ((MqttMessageIdVariableHeader) message.variableHeader()).messageId() + ")"); switch (message.fixedHeader().messageType()) { case PUBLISH: MqttPublishVariableHeader publishHeader = (MqttPublishVariableHeader) message.variableHeader(); String publishPayload = ((MqttPublishMessage)message).payload().toString(StandardCharsets.UTF_8); final int maxPayloadLogSize = 256; log.append("(" + publishHeader.packetId() + ")") .append(" topic=" + publishHeader.topicName()) .append(", qos=" + message.fixedHeader().qosLevel()) .append(", retain=" + message.fixedHeader().isRetain()) .append(", dup=" + message.fixedHeader().isDup())
new MqttFixedHeader(MqttMessageType.CONNACK, false, MqttQoS.AT_MOST_ONCE, false, 0), new MqttConnAckVariableHeader(MqttConnectReturnCode.CONNECTION_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION, false), null); channel.writeAndFlush(connAckMessage); new MqttFixedHeader(MqttMessageType.CONNACK, false, MqttQoS.AT_MOST_ONCE, false, 0), new MqttConnAckVariableHeader(MqttConnectReturnCode.CONNECTION_REFUSED_IDENTIFIER_REJECTED, false), null); channel.writeAndFlush(connAckMessage); new MqttFixedHeader(MqttMessageType.CONNACK, false, MqttQoS.AT_MOST_ONCE, false, 0), new MqttConnAckVariableHeader(MqttConnectReturnCode.CONNECTION_REFUSED_IDENTIFIER_REJECTED, false), null); channel.writeAndFlush(connAckMessage); MqttPublishMessage willMessage = (MqttPublishMessage) MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.valueOf(msg.variableHeader().willQos()), msg.variableHeader().isWillRetain(), 0), new MqttPublishVariableHeader(msg.payload().willTopic(), 0), Unpooled.buffer().writeBytes(msg.payload().willMessageInBytes())); sessionStore.setWillMessage(willMessage); MqttPublishMessage publishMessage = (MqttPublishMessage) MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBLISH, true, MqttQoS.valueOf(dupPublishMessageStore.getMqttQoS()), false, 0), new MqttPublishVariableHeader(dupPublishMessageStore.getTopic(), dupPublishMessageStore.getMessageId()), Unpooled.buffer().writeBytes(dupPublishMessageStore.getMessageBytes())); channel.writeAndFlush(publishMessage); }); MqttMessage pubRelMessage = MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBREL, true, MqttQoS.AT_MOST_ONCE, false, 0), MqttMessageIdVariableHeader.from(dupPubRelMessageStore.getMessageId()), null); channel.writeAndFlush(pubRelMessage); });
public void processPubRel(Channel channel, MqttMessageIdVariableHeader variableHeader) { MqttMessage pubCompMessage = MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBCOMP, false, MqttQoS.AT_MOST_ONCE, false, 0), MqttMessageIdVariableHeader.from(variableHeader.messageId()), null); LOGGER.debug("PUBREL - clientId: {}, messageId: {}", (String) channel.attr(AttributeKey.valueOf("clientId")).get(), variableHeader.messageId()); channel.writeAndFlush(pubCompMessage); }
public static MqttPubAckMessage getMqttPubackMessage(MqttPublishMessage message) { MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.PUBACK, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), message.fixedHeader().remainingLength() ); return new MqttPubAckMessage(fixedHeader, MqttMessageIdVariableHeader.from(message.variableHeader().packetId())); }
public static int messageId(MqttMessage msg) { return ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); }
switch (mqttMessage.fixedHeader().messageType()) { this.handlePuback(mqttPubackMessage.variableHeader().messageId()); break; int pubrecMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId(); this.handlePubrec(pubrecMessageId); break; int pubrelMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId(); this.handlePubrel(pubrelMessageId); break; int pubcompMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId(); this.handlePubcomp(pubcompMessageId); break;
private static Result<MqttMessageIdVariableHeader> decodeMessageIdVariableHeader(ByteBuf buffer) { final Result<Integer> messageId = decodeMessageId(buffer); return new Result<MqttMessageIdVariableHeader>( MqttMessageIdVariableHeader.from(messageId.value), messageId.numberOfBytesConsumed); }
log.append(message.fixedHeader().messageType().toString()); log.append("(" + ((MqttMessageIdVariableHeader) message.variableHeader()).messageId() + ")"); switch (message.fixedHeader().messageType()) { case PUBLISH: MqttPublishVariableHeader publishHeader = (MqttPublishVariableHeader) message.variableHeader(); String publishPayload = ((MqttPublishMessage)message).payload().toString(StandardCharsets.UTF_8); final int maxPayloadLogSize = 256; log.append("(" + publishHeader.packetId() + ")") .append(" topic=" + publishHeader.topicName()) .append(", qos=" + message.fixedHeader().qosLevel()) .append(", retain=" + message.fixedHeader().isRetain()) .append(", dup=" + message.fixedHeader().isDup())
@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); }
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); }
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 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; }
switch (mqttMessage.fixedHeader().messageType()) { publish.fixedHeader().qosLevel(), publish.fixedHeader().isDup(), publish.fixedHeader().isRetain(), publish.variableHeader().topicName(), handlePuback(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; handlePubrec(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; handlePubrel(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; handlePubcomp(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; unsuback.variableHeader().messageId(), unsuback.payload().grantedQoSLevels()); handleSuback(mqttSubAckMessage); handleUnsuback(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break;
static MqttMessage pubrel(int messageID) { MqttFixedHeader pubRelHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, AT_LEAST_ONCE, false, 0); return new MqttMessage(pubRelHeader, from(messageID)); }
public void processPubRec(Channel channel, MqttMessageIdVariableHeader variableHeader) { MqttMessage pubRelMessage = MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_MOST_ONCE, false, 0), MqttMessageIdVariableHeader.from(variableHeader.messageId()), null); LOGGER.debug("PUBREC - clientId: {}, messageId: {}", (String) channel.attr(AttributeKey.valueOf("clientId")).get(), variableHeader.messageId()); dupPublishMessageStoreService.remove((String) channel.attr(AttributeKey.valueOf("clientId")).get(), variableHeader.messageId()); DupPubRelMessageStore dupPubRelMessageStore = new DupPubRelMessageStore().setClientId((String) channel.attr(AttributeKey.valueOf("clientId")).get()) .setMessageId(variableHeader.messageId()); dupPubRelMessageStoreService.put((String) channel.attr(AttributeKey.valueOf("clientId")).get(), dupPubRelMessageStore); channel.writeAndFlush(pubRelMessage); }
private void processPubRec(MqttMessage msg) { final int messageID = ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); final Session session = sessionRegistry.retrieve(getClientId()); session.processPubRec(messageID); }