Improvements in MQTT publish processing
This commit is contained in:
		
							parent
							
								
									51ac96d010
								
							
						
					
					
						commit
						9cdf3dd80c
					
				@ -340,6 +340,7 @@ final class MqttClientImpl implements MqttClient {
 | 
			
		||||
        MqttPublishVariableHeader variableHeader = new MqttPublishVariableHeader(topic, getNewMessageId().messageId());
 | 
			
		||||
        MqttPublishMessage message = new MqttPublishMessage(fixedHeader, variableHeader, payload);
 | 
			
		||||
        MqttPendingPublish pendingPublish = new MqttPendingPublish(variableHeader.packetId(), future, payload.retain(), message, qos);
 | 
			
		||||
        this.pendingPublishes.put(pendingPublish.getMessageId(), pendingPublish);
 | 
			
		||||
        ChannelFuture channelFuture = this.sendAndFlushPacket(message);
 | 
			
		||||
 | 
			
		||||
        if (channelFuture != null) {
 | 
			
		||||
@ -350,9 +351,9 @@ final class MqttClientImpl implements MqttClient {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (pendingPublish.isSent() && pendingPublish.getQos() == MqttQoS.AT_MOST_ONCE) {
 | 
			
		||||
            this.pendingPublishes.remove(pendingPublish.getMessageId());
 | 
			
		||||
            pendingPublish.getFuture().setSuccess(null); //We don't get an ACK for QOS 0
 | 
			
		||||
        } else if (pendingPublish.isSent()) {
 | 
			
		||||
            this.pendingPublishes.put(pendingPublish.getMessageId(), pendingPublish);
 | 
			
		||||
            pendingPublish.startPublishRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);
 | 
			
		||||
        }
 | 
			
		||||
        return future;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user