List of usage examples for io.netty.handler.codec.mqtt MqttMessage variableHeader
Object variableHeader
To view the source code for io.netty.handler.codec.mqtt MqttMessage variableHeader.
Click Source Link
From source file:com.caricah.iotracah.server.mqttserver.transform.MqttIOTTransformerImpl.java
License:Apache License
@Override public IOTMessage toIOTMessage(MqttMessage serverMessage) { MqttFixedHeader fxH = serverMessage.fixedHeader(); if (null == fxH) { return null; }//from w w w.ja v a2s. com switch (fxH.messageType()) { case PUBLISH: MqttPublishMessage publishMessage = (MqttPublishMessage) serverMessage; MqttPublishVariableHeader pubVH = publishMessage.variableHeader(); ByteBuffer byteBuffer = publishMessage.payload().nioBuffer(); return PublishMessage.from(pubVH.messageId(), fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(), pubVH.topicName(), byteBuffer, true); case PUBACK: MqttPubAckMessage pubAckMessage = (MqttPubAckMessage) serverMessage; MqttMessageIdVariableHeader msgIdVH = pubAckMessage.variableHeader(); return AcknowledgeMessage.from(msgIdVH.messageId()); case PUBREC: msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader(); return PublishReceivedMessage.from(msgIdVH.messageId()); case PUBREL: msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader(); return ReleaseMessage.from(msgIdVH.messageId(), fxH.isDup()); case PUBCOMP: msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader(); return CompleteMessage.from(msgIdVH.messageId()); case PINGREQ: case PINGRESP: return Ping.from(fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain()); case CONNECT: MqttConnectMessage mqttConnectMessage = (MqttConnectMessage) serverMessage; MqttConnectVariableHeader conVH = mqttConnectMessage.variableHeader(); MqttConnectPayload conPayload = mqttConnectMessage.payload(); boolean isAnnonymousConnect = (!conVH.hasPassword() && !conVH.hasUserName()); ConnectMessage connectionMessage = ConnectMessage.from(fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(), conVH.name(), conVH.version(), conVH.isCleanSession(), isAnnonymousConnect, conPayload.clientIdentifier(), conPayload.userName(), conPayload.password(), conVH.keepAliveTimeSeconds(), ""); connectionMessage.setHasWill(conVH.isWillFlag()); connectionMessage.setRetainWill(conVH.isWillRetain()); connectionMessage.setWillQos(conVH.willQos()); connectionMessage.setWillTopic(conPayload.willTopic()); connectionMessage.setWillMessage(conPayload.willMessage()); return connectionMessage; case CONNACK: MqttConnAckMessage connAckMessage = (MqttConnAckMessage) serverMessage; MqttConnAckVariableHeader connAckVH = connAckMessage.variableHeader(); return ConnectAcknowledgeMessage.from(fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(), 20, connAckVH.connectReturnCode()); case SUBSCRIBE: MqttSubscribeMessage subMsg = (MqttSubscribeMessage) serverMessage; msgIdVH = subMsg.variableHeader(); MqttSubscribePayload subPayload = subMsg.payload(); SubscribeMessage subscribeMessage = SubscribeMessage.from(msgIdVH.messageId(), fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain()); subPayload.topicSubscriptions().forEach(tSub -> { subscribeMessage.getTopicFilterList() .add(new AbstractMap.SimpleEntry<>(tSub.topicName(), tSub.qualityOfService().value())); }); return subscribeMessage; case UNSUBSCRIBE: MqttUnsubscribeMessage unSubMsg = (MqttUnsubscribeMessage) serverMessage; msgIdVH = unSubMsg.variableHeader(); MqttUnsubscribePayload unsubscribePayload = unSubMsg.payload(); return UnSubscribeMessage.from(msgIdVH.messageId(), fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(), unsubscribePayload.topics()); case DISCONNECT: return DisconnectMessage.from(false); default: return null; } }
From source file:io.crate.mqtt.netty.MqttMessageLogger.java
private static int messageId(MqttMessage msg) { return ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); }
From source file:io.moquette.spi.impl.Utils.java
License:Open Source License
public static int messageId(MqttMessage msg) { return ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId(); }
From source file:io.vertx.mqtt.impl.MqttClientConnection.java
License:Apache License
/** * Handle the MQTT message received from the remote MQTT server * * @param msg Incoming Packet//from w ww .j ava 2 s. c o m */ synchronized void handleMessage(Object msg) { // handling directly native Netty MQTT messages, some of them are translated // to the related Vert.x ones for polyglotization if (msg instanceof MqttMessage) { MqttMessage mqttMessage = (MqttMessage) msg; DecoderResult result = mqttMessage.decoderResult(); if (result.isFailure()) { chctx.pipeline().fireExceptionCaught(result.cause()); return; } if (!result.isFinished()) { chctx.pipeline().fireExceptionCaught(new Exception("Unfinished message")); return; } log.debug(String.format("Incoming packet %s", msg)); switch (mqttMessage.fixedHeader().messageType()) { case CONNACK: io.netty.handler.codec.mqtt.MqttConnAckMessage connack = (io.netty.handler.codec.mqtt.MqttConnAckMessage) mqttMessage; MqttConnAckMessage mqttConnAckMessage = MqttConnAckMessage.create( connack.variableHeader().connectReturnCode(), connack.variableHeader().isSessionPresent()); handleConnack(mqttConnAckMessage); break; case PUBLISH: io.netty.handler.codec.mqtt.MqttPublishMessage publish = (io.netty.handler.codec.mqtt.MqttPublishMessage) mqttMessage; ByteBuf newBuf = VertxHandler.safeBuffer(publish.payload(), chctx.alloc()); MqttPublishMessage mqttPublishMessage = MqttPublishMessage.create( publish.variableHeader().messageId(), publish.fixedHeader().qosLevel(), publish.fixedHeader().isDup(), publish.fixedHeader().isRetain(), publish.variableHeader().topicName(), newBuf); handlePublish(mqttPublishMessage); break; case PUBACK: handlePuback(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; case PUBREC: handlePubrec(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; case PUBREL: handlePubrel(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; case PUBCOMP: handlePubcomp(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; case SUBACK: io.netty.handler.codec.mqtt.MqttSubAckMessage unsuback = (io.netty.handler.codec.mqtt.MqttSubAckMessage) mqttMessage; MqttSubAckMessage mqttSubAckMessage = MqttSubAckMessage .create(unsuback.variableHeader().messageId(), unsuback.payload().grantedQoSLevels()); handleSuback(mqttSubAckMessage); break; case UNSUBACK: handleUnsuback(((MqttMessageIdVariableHeader) mqttMessage.variableHeader()).messageId()); break; case PINGRESP: handlePingresp(); break; default: this.chctx.pipeline() .fireExceptionCaught(new Exception("Wrong message type " + msg.getClass().getName())); break; } } else { this.chctx.pipeline().fireExceptionCaught(new Exception("Wrong message type")); } }
From source file:io.vertx.mqtt.impl.MqttConnection.java
License:Apache License
/** * Handle the MQTT message received by the remote MQTT client * * @param msg message to handle//from w w w . j a va 2 s. co m */ synchronized void handleMessage(Object msg) { // handling directly native Netty MQTT messages because we don't need to // expose them at higher level (so no need for polyglotization) if (msg instanceof io.netty.handler.codec.mqtt.MqttMessage) { io.netty.handler.codec.mqtt.MqttMessage mqttMessage = (io.netty.handler.codec.mqtt.MqttMessage) msg; DecoderResult result = mqttMessage.decoderResult(); if (result.isFailure()) { channel.pipeline().fireExceptionCaught(result.cause()); return; } if (!result.isFinished()) { channel.pipeline().fireExceptionCaught(new Exception("Unfinished message")); return; } switch (mqttMessage.fixedHeader().messageType()) { case CONNECT: handleConnect((MqttConnectMessage) msg); break; case PUBACK: io.netty.handler.codec.mqtt.MqttPubAckMessage mqttPubackMessage = (io.netty.handler.codec.mqtt.MqttPubAckMessage) mqttMessage; this.handlePuback(mqttPubackMessage.variableHeader().messageId()); break; case PUBREC: int pubrecMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubrec(pubrecMessageId); break; case PUBREL: int pubrelMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubrel(pubrelMessageId); break; case PUBCOMP: int pubcompMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubcomp(pubcompMessageId); break; case PINGREQ: this.handlePingreq(); break; case DISCONNECT: this.handleDisconnect(); break; default: this.channel.pipeline() .fireExceptionCaught(new Exception("Wrong message type " + msg.getClass().getName())); break; } // handling mapped Vert.x MQTT messages (from Netty ones) because they'll be provided // to the higher layer (so need for ployglotization) } else { if (msg instanceof MqttSubscribeMessage) { this.handleSubscribe((MqttSubscribeMessage) msg); } else if (msg instanceof MqttUnsubscribeMessage) { this.handleUnsubscribe((MqttUnsubscribeMessage) msg); } else if (msg instanceof MqttPublishMessage) { this.handlePublish((MqttPublishMessage) msg); } else { this.channel.pipeline().fireExceptionCaught(new Exception("Wrong message type")); } } }
From source file:io.vertx.mqtt.impl.MqttServerConnection.java
License:Apache License
/** * Handle the MQTT message received by the remote MQTT client * * @param msg message to handle/* w w w. ja v a2 s .co m*/ */ synchronized void handleMessage(Object msg) { // handling directly native Netty MQTT messages, some of them are translated // to the related Vert.x ones for polyglotization if (msg instanceof io.netty.handler.codec.mqtt.MqttMessage) { io.netty.handler.codec.mqtt.MqttMessage mqttMessage = (io.netty.handler.codec.mqtt.MqttMessage) msg; DecoderResult result = mqttMessage.decoderResult(); if (result.isFailure()) { chctx.pipeline().fireExceptionCaught(result.cause()); return; } if (!result.isFinished()) { chctx.pipeline().fireExceptionCaught(new Exception("Unfinished message")); return; } switch (mqttMessage.fixedHeader().messageType()) { case CONNECT: handleConnect((MqttConnectMessage) msg); break; case SUBSCRIBE: io.netty.handler.codec.mqtt.MqttSubscribeMessage subscribe = (io.netty.handler.codec.mqtt.MqttSubscribeMessage) mqttMessage; MqttSubscribeMessage mqttSubscribeMessage = MqttSubscribeMessage .create(subscribe.variableHeader().messageId(), subscribe.payload().topicSubscriptions()); this.handleSubscribe(mqttSubscribeMessage); break; case UNSUBSCRIBE: io.netty.handler.codec.mqtt.MqttUnsubscribeMessage unsubscribe = (io.netty.handler.codec.mqtt.MqttUnsubscribeMessage) mqttMessage; MqttUnsubscribeMessage mqttUnsubscribeMessage = MqttUnsubscribeMessage .create(unsubscribe.variableHeader().messageId(), unsubscribe.payload().topics()); this.handleUnsubscribe(mqttUnsubscribeMessage); break; case PUBLISH: io.netty.handler.codec.mqtt.MqttPublishMessage publish = (io.netty.handler.codec.mqtt.MqttPublishMessage) mqttMessage; ByteBuf newBuf = VertxHandler.safeBuffer(publish.payload(), this.chctx.alloc()); MqttPublishMessage mqttPublishMessage = MqttPublishMessage.create( publish.variableHeader().messageId(), publish.fixedHeader().qosLevel(), publish.fixedHeader().isDup(), publish.fixedHeader().isRetain(), publish.variableHeader().topicName(), newBuf); this.handlePublish(mqttPublishMessage); break; case PUBACK: io.netty.handler.codec.mqtt.MqttPubAckMessage mqttPubackMessage = (io.netty.handler.codec.mqtt.MqttPubAckMessage) mqttMessage; this.handlePuback(mqttPubackMessage.variableHeader().messageId()); break; case PUBREC: int pubrecMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubrec(pubrecMessageId); break; case PUBREL: int pubrelMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubrel(pubrelMessageId); break; case PUBCOMP: int pubcompMessageId = ((io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) mqttMessage .variableHeader()).messageId(); this.handlePubcomp(pubcompMessageId); break; case PINGREQ: this.handlePingreq(); break; case DISCONNECT: this.handleDisconnect(); break; default: this.chctx.fireExceptionCaught(new Exception("Wrong message type " + msg.getClass().getName())); break; } } else { this.chctx.fireExceptionCaught(new Exception("Wrong message type")); } }
From source file:net.anyflow.lannister.client.MqttPacketReceiver.java
License:Apache License
@Override protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception { switch (msg.fixedHeader().messageType()) { case PUBLISH: if (receiver != null) { receiver.messageReceived(Message.newMessage(client.clientId(), (MqttPublishMessage) msg)); }/* ww w .jav a 2 s . c o m*/ int messageId = ((MqttPublishMessage) msg).variableHeader().messageId(); if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.AT_LEAST_ONCE) { client.send(MessageFactory.puback(messageId)); } else if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.EXACTLY_ONCE) { client.send(MessageFactory.pubrec(messageId)); } break; case CONNACK: sharedObject.receivedMessage(msg); synchronized (sharedObject.locker()) { sharedObject.locker().notify(); } break; case PUBREC: client.send(MessageFactory.pubrel(((MqttMessageIdVariableHeader) msg.variableHeader()).messageId())); break; case SUBACK: case PUBACK: case PUBCOMP: default: break; } }
From source file:net.anyflow.lannister.packetreceiver.GenericReceiver.java
License:Apache License
@Override protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception { if (msg.decoderResult().isSuccess() == false) { logger.error("decoding MQTT message failed : {}", msg.decoderResult().cause().getMessage()); Session session = Session.NEXUS.get(ctx.channel().id()); if (session != null) { session.dispose(true); // [MQTT-4.8.0-1] } else {// w w w . ja va2 s . c o m ctx.channel().writeAndFlush(msg).addListener(f -> { logger.debug("packet outgoing [{}]", msg); ctx.channel().disconnect().addListener(ChannelFutureListener.CLOSE).addListener(fs -> // [MQTT-3.2.2-5] Plugins.SELF.get(DisconnectEventListener.class) .disconnected(new AbnormalDisconnectEventArgs())); }); } return; } else { logger.debug("packet incoming [message={}]", msg.toString()); Session session = Session.NEXUS.get(ctx.channel().id()); if (session == null) { logger.error("None exist session message : {}", msg.toString()); ctx.channel().disconnect().addListener(ChannelFutureListener.CLOSE).addListener(fs -> // [MQTT-4.8.0-1] Plugins.SELF.get(DisconnectEventListener.class).disconnected(new AbnormalDisconnectEventArgs())); return; } session.setLastIncomingTime(new Date()); switch (msg.fixedHeader().messageType()) { case DISCONNECT: DisconnectReceiver.SHARED.handle(session); return; case PINGREQ: PingReqReceiver.SHARED.handle(session); return; case PUBREC: PubRecReceiver.SHARED.handle(session, ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId()); return; case PUBREL: PubRelReceiver.SHARED.handle(session, ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId()); return; case PUBCOMP: PubCompReceiver.SHARED.handle(session, ((MqttMessageIdVariableHeader) msg.variableHeader()).messageId()); return; default: session.dispose(true); // [MQTT-4.8.0-1] return; } } }
From source file:org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolHandler.java
License:Apache License
private int getMessageId(MqttMessage message) { return ((MqttMessageIdVariableHeader) message.variableHeader()).messageId(); }
From source file:org.apache.activemq.artemis.core.protocol.mqtt.MQTTUtil.java
License:Apache License
public static void traceMessage(MQTTSessionState state, MqttMessage message, boolean inbound) { StringBuilder log = new StringBuilder("MQTT("); if (state != null) { log.append(state.getClientId()); }/*from www . j a va2s.co m*/ if (inbound) { log.append("): IN << "); } else { log.append("): OUT >> "); } if (message.fixedHeader() != null) { log.append(message.fixedHeader().messageType().toString()); if (message.variableHeader() instanceof MqttMessageIdVariableHeader) { 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()) .append(", payload=" + (publishPayload.length() > maxPayloadLogSize ? publishPayload.substring(0, maxPayloadLogSize) : publishPayload)); break; case CONNECT: MqttConnectVariableHeader connectHeader = (MqttConnectVariableHeader) message.variableHeader(); MqttConnectPayload payload = ((MqttConnectMessage) message).payload(); log.append(" protocol=(").append(connectHeader.name()).append(", ").append(connectHeader.version()) .append(")").append(", hasPassword=").append(connectHeader.hasPassword()) .append(", isCleanSession=").append(connectHeader.isCleanSession()) .append(", keepAliveTimeSeconds=").append(connectHeader.keepAliveTimeSeconds()) .append(", clientIdentifier=").append(payload.clientIdentifier()).append(", hasUserName=") .append(connectHeader.hasUserName()); if (connectHeader.hasUserName()) { log.append(", userName=").append(payload.userName()); } log.append(", isWillFlag=").append(connectHeader.isWillFlag()); if (connectHeader.isWillFlag()) { log.append(", willQos=").append(connectHeader.willQos()).append(", isWillRetain=") .append(connectHeader.isWillRetain()).append(", willTopic=") .append(payload.willTopic()); } break; case CONNACK: MqttConnAckVariableHeader connackHeader = (MqttConnAckVariableHeader) message.variableHeader(); log.append(" connectReturnCode=").append(connackHeader.connectReturnCode().byteValue()) .append(", sessionPresent=").append(connackHeader.isSessionPresent()); break; case SUBSCRIBE: for (MqttTopicSubscription sub : ((MqttSubscribeMessage) message).payload().topicSubscriptions()) { log.append("\n\t" + sub.topicName() + " : " + sub.qualityOfService()); } break; case SUBACK: for (Integer qos : ((MqttSubAckMessage) message).payload().grantedQoSLevels()) { log.append("\n\t" + qos); } break; case UNSUBSCRIBE: for (String topic : ((MqttUnsubscribeMessage) message).payload().topics()) { log.append("\n\t" + topic); } break; } logger.trace(log.toString()); } }