From 2640a5354c86926fe81b7e4456c76eba8e8bb0cf Mon Sep 17 00:00:00 2001 From: andsel Date: Tue, 13 Dec 2016 22:16:31 +0100 Subject: [PATCH] Minor, unified method --- .../spi/impl/BestEffortMessageSender.java | 17 ++++++++++++----- .../spi/impl/PersistentQueueMessageSender.java | 15 ++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/broker/src/main/java/io/moquette/spi/impl/BestEffortMessageSender.java b/broker/src/main/java/io/moquette/spi/impl/BestEffortMessageSender.java index ecb863a0..aa176742 100644 --- a/broker/src/main/java/io/moquette/spi/impl/BestEffortMessageSender.java +++ b/broker/src/main/java/io/moquette/spi/impl/BestEffortMessageSender.java @@ -11,6 +11,8 @@ import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; import java.util.concurrent.ConcurrentMap; +import static io.moquette.parser.proto.messages.AbstractMessage.QOSType.MOST_ONE; + class BestEffortMessageSender { private static final Logger LOG = LoggerFactory.getLogger(BestEffortMessageSender.class); @@ -24,11 +26,7 @@ class BestEffortMessageSender { String clientId = clientsession.clientID; LOG.debug("publishQos0 invoked clientId <{}> on topic <{}>", clientId, topic); - PublishMessage pubMessage = new PublishMessage(); - pubMessage.setRetainFlag(false); - pubMessage.setTopicName(topic); - pubMessage.setQos(AbstractMessage.QOSType.MOST_ONE); - pubMessage.setPayload(message); + PublishMessage pubMessage = createPublishForQos(topic, MOST_ONE, message); LOG.info("send publish message to <{}> on topic <{}>", clientId, topic); if (LOG.isDebugEnabled()) { @@ -55,4 +53,13 @@ class BestEffortMessageSender { channel.writeAndFlush(pubMessage); } } + + static PublishMessage createPublishForQos(String topic, AbstractMessage.QOSType qos, ByteBuffer message) { + PublishMessage pubMessage = new PublishMessage(); + pubMessage.setRetainFlag(false); + pubMessage.setTopicName(topic); + pubMessage.setQos(qos); + pubMessage.setPayload(message); + return pubMessage; + } } diff --git a/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java b/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java index 41348637..1fcdd197 100644 --- a/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java +++ b/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java @@ -11,6 +11,8 @@ import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; import java.util.concurrent.ConcurrentMap; +import static io.moquette.spi.impl.BestEffortMessageSender.createPublishForQos; + class PersistentQueueMessageSender { private static final Logger LOG = LoggerFactory.getLogger(PersistentQueueMessageSender.class); @@ -25,20 +27,15 @@ class PersistentQueueMessageSender { String clientId = clientsession.clientID; LOG.debug("directSend invoked clientId <{}> on topic <{}> QoS {} retained {} messageID {}", clientId, topic, qos, false, messageID); - PublishMessage pubMessage = new PublishMessage(); - pubMessage.setRetainFlag(false); - pubMessage.setTopicName(topic); - pubMessage.setQos(qos); - pubMessage.setPayload(message); + PublishMessage pubMessage = createPublishForQos(topic, qos, message); + + //set the PacketIdentifier only for QoS > 0 + pubMessage.setMessageID(messageID); LOG.info("send publish message to <{}> on topic <{}>", clientId, topic); if (LOG.isDebugEnabled()) { LOG.debug("content <{}>", DebugUtils.payload2Str(message)); } - //set the PacketIdentifier only for QoS > 0 - if (pubMessage.getQos() != AbstractMessage.QOSType.MOST_ONE) { - pubMessage.setMessageID(messageID); - } if (connectionDescriptors == null) { throw new RuntimeException("Internal bad error, found connectionDescriptors to null while it should be " +