static MqttFixedHeader validateFixedHeader(MqttFixedHeader mqttFixedHeader) { switch (mqttFixedHeader.messageType()) { case PUBREL: case SUBSCRIBE: case UNSUBSCRIBE: if (mqttFixedHeader.qosLevel() != MqttQoS.AT_LEAST_ONCE) { throw new DecoderException(mqttFixedHeader.messageType().name() + " message must have QoS 1"); } default: return mqttFixedHeader; } }
void sendIfWritableElseDrop(MqttMessage msg) { if (LOG.isDebugEnabled()) { LOG.debug("OUT {} on channel {}", msg.fixedHeader().messageType(), channel); } if (channel.isWritable()) { channel.write(msg).addListener(FIRE_EXCEPTION_ON_FAILURE); } }
@Override public void channelRead(ChannelHandlerContext ctx, Object message) { MqttMessage msg = (MqttMessage) message; MqttMessageType messageType = msg.fixedHeader().messageType(); switch (messageType) { case PUBLISH: this.publishesMetrics.mark(); break; case SUBSCRIBE: this.subscribeMetrics.mark(); break; case CONNECT: this.connectedClientsMetrics.inc(); break; case DISCONNECT: this.connectedClientsMetrics.dec(); break; default: break; } ctx.fireChannelRead(message); }
@Override public void channelRead(ChannelHandlerContext ctx, Object message) throws Exception { MqttMessage msg = NettyUtils.validateMessage(message); final MQTTConnection mqttConnection = mqttConnection(ctx.channel()); try { mqttConnection.handleMessage(msg); } catch (Throwable ex) { //ctx.fireExceptionCaught(ex); LOG.error("Error processing protocol message: {}", msg.fixedHeader().messageType(), ex); ctx.channel().close().addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) { LOG.info("Closed client channel due to exception in processing"); } }); } finally { ReferenceCountUtil.release(msg); } }
@Override public void channelRead(ChannelHandlerContext ctx, Object message) { MqttMessage msg = (MqttMessage) message; LOG.info("Received a message of type {}", msg.fixedHeader().messageType()); m_client.messageReceived(msg); }
private static int getFixedHeaderByte1(MqttFixedHeader header) { int ret = 0; ret |= header.messageType().value() << 4; if (header.isDup()) { ret |= 0x08; } ret |= header.qosLevel().value() << 1; if (header.isRetain()) { ret |= 0x01; } return ret; }
private void doConnect(MqttConnectMessage connectMessage) { final CountDownLatch latch = new CountDownLatch(1); this.setCallback(msg -> { receivedMsg = msg; latch.countDown(); }); this.sendMessage(connectMessage); try { latch.await(200, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException("Cannot receive message in 200 ms", e); } if (!(this.receivedMsg instanceof MqttConnAckMessage)) { MqttMessageType messageType = this.receivedMsg.fixedHeader().messageType(); throw new RuntimeException("Expected a CONN_ACK message but received " + messageType); } }
static MqttFixedHeader resetUnusedFields(MqttFixedHeader mqttFixedHeader) { switch (mqttFixedHeader.messageType()) { case CONNECT: case CONNACK: mqttFixedHeader.isRetain()) { return new MqttFixedHeader( mqttFixedHeader.messageType(), false, MqttQoS.AT_MOST_ONCE, if (mqttFixedHeader.isRetain()) { return new MqttFixedHeader( mqttFixedHeader.messageType(), mqttFixedHeader.isDup(), mqttFixedHeader.qosLevel(),
@Override public void messageReceived(ChannelHandlerContext ctx, MqttMessage msg) { this.stats.incrementMqttStat(); MqttMessageType messageType = msg.fixedHeader().messageType(); switch (messageType) { case PUBLISH : MqttPublishMessage publishMessage = (MqttPublishMessage) msg; String topic = publishMessage.variableHeader().topicName(); switch (topic.toLowerCase()) { case "hardware" : hardware.messageReceived(state, publishMessage); break; } break; case PINGREQ : ctx.writeAndFlush( MqttMessageFactory.newMessage(msg.fixedHeader(), msg.variableHeader(), null), ctx.voidPromise()); break; case DISCONNECT : log.trace("Got disconnect. Closing..."); ctx.close(); break; } }
MqttMessageType messageType = msg.fixedHeader().messageType(); switch (messageType) { case CONNACK:
decodePayload( buffer, mqttFixedHeader.messageType(), bytesRemainingInVariablePart, variableHeader); throw new DecoderException( "non-zero remaining payload bytes: " + bytesRemainingInVariablePart + " (" + mqttFixedHeader.messageType() + ')');
public static MqttMessage newMessage(MqttFixedHeader mqttFixedHeader, Object variableHeader, Object payload) { switch (mqttFixedHeader.messageType()) { case CONNECT : return new MqttConnectMessage( throw new IllegalArgumentException("unknown message type: " + mqttFixedHeader.messageType());
switch (message.fixedHeader().messageType()) { case CONNECT: return encodeConnectMessage(byteBufAllocator, (MqttConnectMessage) message); "Unknown message type: " + message.fixedHeader().messageType().value());
void handleMessage(MqttMessage msg) { MqttMessageType messageType = msg.fixedHeader().messageType(); LOG.debug("Received MQTT message, type: {}, channel: {}", messageType, channel); switch (messageType) {
switch (mqttFixedHeader.messageType()) { case CONNECT: return decodeConnectionVariableHeader(buffer);
public static MqttMessage getMqttPingrespMessage(MqttMessage message) { assert message.fixedHeader().messageType() == MqttMessageType.PINGREQ; MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.PINGRESP, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), 0 ); return new MqttMessage(fixedHeader); }
public static MqttMessage getMqttPubrelMessage(MqttMessage message) { assert message.fixedHeader().messageType() == MqttMessageType.PUBREC; MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.PUBREL, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), message.fixedHeader().remainingLength() ); return new MqttMessage(fixedHeader); }
public static MqttMessage getMqttPubcompMessage(MqttMessage message) { assert message.fixedHeader().messageType() == MqttMessageType.PUBREL; MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.PUBCOMP, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), message.fixedHeader().remainingLength() ); return new MqttMessage(fixedHeader); }
public static MqttConnAckMessage getMqttConnackMessage(MqttConnectMessage message, MqttConnectReturnCode returnCode) { assert message.fixedHeader().messageType() == MqttMessageType.CONNECT; MqttConnAckVariableHeader variableHeader = new MqttConnAckVariableHeader( returnCode, message.variableHeader().isCleanSession() ); MqttFixedHeader fixedHeader = new MqttFixedHeader( MqttMessageType.CONNACK, message.fixedHeader().isDup(), message.fixedHeader().qosLevel(), message.fixedHeader().isRetain(), 0); return new MqttConnAckMessage(fixedHeader, variableHeader); }
message.setPayload(mqttMessage); switch (mqttMessage.fixedHeader().messageType()) { case CONNECT: message.setType(Message.Type.MQTT_CONNECT);