Example usage for io.netty.handler.codec.mqtt MqttConnAckMessage variableHeader

List of usage examples for io.netty.handler.codec.mqtt MqttConnAckMessage variableHeader

Introduction

In this page you can find the example usage for io.netty.handler.codec.mqtt MqttConnAckMessage variableHeader.

Prototype

@Override
    public MqttConnAckVariableHeader variableHeader() 

Source Link

Usage

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;
    }//w w w . ja v a 2s  .  c  o  m

    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.operations.MqttConnectIntegrationTest.java

@Test
public void testConnectWithoutClientId() throws Exception {
    MqttMessage connectMessage = connectMessage("", false);

    mqttClient.sendMessage(connectMessage);
    MqttConnAckMessage response = (MqttConnAckMessage) mqttClient.lastReceivedMessage();
    assertThat(response.variableHeader().connectReturnCode(), is(CONNECTION_REFUSED_IDENTIFIER_REJECTED));
}

From source file:io.crate.mqtt.operations.MqttConnectIntegrationTest.java

@Test
public void testConnectWithoutClientIdButCleanSession() throws Exception {
    MqttMessage connectMessage = connectMessage("", true);

    mqttClient.sendMessage(connectMessage);
    MqttConnAckMessage response = (MqttConnAckMessage) mqttClient.lastReceivedMessage();
    assertThat(response.variableHeader().connectReturnCode(), is(CONNECTION_ACCEPTED));
}

From source file:io.crate.mqtt.operations.MqttConnectIntegrationTest.java

@Test
public void testConnect() throws Exception {
    MqttMessage connectMessage = connectMessage("c1", true);

    mqttClient.sendMessage(connectMessage);
    MqttConnAckMessage response = (MqttConnAckMessage) mqttClient.lastReceivedMessage();
    assertThat(response.variableHeader().connectReturnCode(), is(CONNECTION_ACCEPTED));
}

From source file:io.crate.mqtt.operations.MqttConnectIntegrationTest.java

@Test
public void testConcurrentConnections() throws Throwable {
    ExecutorService executorService = Executors.newFixedThreadPool(50);
    final AtomicReference<Throwable> lastThrowed = new AtomicReference<>();

    for (int i = 0; i < 50; i++) {
        String clientName = String.format("c%s", i);
        executorService.submit(() -> {
            try (Client mqttClient = createMqttClient()) {
                mqttClient.connect();//w  ww .  ja v  a 2s.com
                MqttMessage connectMessage = connectMessage(clientName, true);
                mqttClient.sendMessage(connectMessage);

                MqttConnAckMessage response = (MqttConnAckMessage) mqttClient.lastReceivedMessage();
                assertThat(response.variableHeader().connectReturnCode(), is(CONNECTION_ACCEPTED));
            } catch (Throwable t) {
                lastThrowed.set(t);
            }
        });
    }

    executorService.shutdown();
    executorService.awaitTermination(10, TimeUnit.SECONDS);

    Throwable throwable = lastThrowed.get();
    if (throwable != null) {
        throw throwable;
    }
}

From source file:io.crate.mqtt.protocol.MqttProcessorTest.java

@Test
public void testConnectWithWrongMqttVersion() throws Exception {
    EmbeddedChannel ch = new EmbeddedChannel();

    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);//from www .  j a v  a  2 s.c om
    MqttConnectVariableHeader variableHeader = new MqttConnectVariableHeader("connect", (byte) 1, false, false,
            false, (byte) 1, false, false, 60);
    MqttConnectPayload payload = new MqttConnectPayload("mqttClient", "someTopic", new byte[0], null, null);
    processor.handleConnect(ch, (MqttConnectMessage) io.netty.handler.codec.mqtt.MqttMessageFactory
            .newMessage(fixedHeader, variableHeader, payload));

    MqttConnAckMessage response = ch.readOutbound();
    assertThat(response.variableHeader().connectReturnCode(),
            is(MqttConnectReturnCode.CONNECTION_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION));
    assertFalse(response.variableHeader().isSessionPresent());
}

From source file:io.crate.mqtt.protocol.MqttProcessorTest.java

@Test
public void testConnectWithoutClientId() throws Exception {
    EmbeddedChannel ch = new EmbeddedChannel();

    // clientId may be null if the session is clean
    MqttMessage msg = connectMessage(null, true);
    processor.handleConnect(ch, (MqttConnectMessage) msg);

    MqttConnAckMessage response = ch.readOutbound();
    assertThat(response.variableHeader().connectReturnCode(), is(MqttConnectReturnCode.CONNECTION_ACCEPTED));
    assertTrue(response.variableHeader().isSessionPresent());

    // clientID must not be null if the session is not clean
    msg = connectMessage(null, false);//from   ww w . ja v  a 2  s . c  o m
    processor.handleConnect(ch, (MqttConnectMessage) msg);

    response = ch.readOutbound();
    assertThat(response.variableHeader().connectReturnCode(),
            is(MqttConnectReturnCode.CONNECTION_REFUSED_IDENTIFIER_REJECTED));
    assertFalse(response.variableHeader().isSessionPresent());
}

From source file:io.crate.mqtt.protocol.MqttProcessorTest.java

@Test
public void testConnectAck() throws Exception {
    EmbeddedChannel ch = new EmbeddedChannel();

    MqttMessage msg = connectMessage("client", true);
    processor.handleConnect(ch, (MqttConnectMessage) msg);

    MqttConnAckMessage response = ch.readOutbound();
    assertThat(response.variableHeader().connectReturnCode(), is(MqttConnectReturnCode.CONNECTION_ACCEPTED));
    assertTrue(response.variableHeader().isSessionPresent());
}

From source file:io.moquette.server.ServerLowlevelMessagesIntegrationTests.java

License:Open Source License

@Test
public void testRejectConnectWithEmptyClientID() throws InterruptedException {
    LOG.info("*** testRejectConnectWithEmptyClientID ***");
    m_client.clientId("").connect();

    this.receivedMsg = this.m_client.lastReceivedMessage();

    assertTrue(receivedMsg instanceof MqttConnAckMessage);
    MqttConnAckMessage connAck = (MqttConnAckMessage) receivedMsg;
    assertEquals(CONNECTION_REFUSED_IDENTIFIER_REJECTED, connAck.variableHeader().connectReturnCode());
}

From source file:io.moquette.spi.impl.AbstractProtocolProcessorCommonUtils.java

License:Open Source License

protected void connectAsClient(EmbeddedChannel channel, String clientId) {
    MqttConnectMessage connectMessage = MqttMessageBuilders.connect().clientId(clientId).build();
    this.m_processor.processConnect(channel, connectMessage);
    MqttConnAckMessage connAck = channel.readOutbound();
    assertEquals("Connect must be accepted", CONNECTION_ACCEPTED, connAck.variableHeader().connectReturnCode());
}