List of usage examples for io.netty.handler.codec.mqtt MqttConnAckMessage variableHeader
@Override
public MqttConnAckVariableHeader variableHeader()
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()); }