Removed resending of PUBREC msgs
This commit is contained in:
		
							parent
							
								
									4df660fe03
								
							
						
					
					
						commit
						8e8c1ae860
					
				@ -515,7 +515,7 @@ js:
 | 
			
		||||
    # Specify thread pool size for JavaScript sandbox resource monitor
 | 
			
		||||
    monitor_thread_pool_size: "${LOCAL_JS_SANDBOX_MONITOR_THREAD_POOL_SIZE:4}"
 | 
			
		||||
    # Maximum CPU time in milliseconds allowed for script execution
 | 
			
		||||
    max_cpu_time: "${LOCAL_JS_SANDBOX_MAX_CPU_TIME:10000}"
 | 
			
		||||
    max_cpu_time: "${LOCAL_JS_SANDBOX_MAX_CPU_TIME:8000}"
 | 
			
		||||
    # Maximum allowed JavaScript execution errors before JavaScript will be blacklisted
 | 
			
		||||
    max_errors: "${LOCAL_JS_SANDBOX_MAX_ERRORS:3}"
 | 
			
		||||
    # JS Eval max request timeout. 0 - no timeout
 | 
			
		||||
 | 
			
		||||
@ -198,10 +198,9 @@ final class MqttChannelHandler extends SimpleChannelInboundHandler<MqttMessage>
 | 
			
		||||
                    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(message.variableHeader().packetId());
 | 
			
		||||
                    MqttMessage pubrecMessage = new MqttMessage(fixedHeader, variableHeader);
 | 
			
		||||
 | 
			
		||||
                    MqttIncomingQos2Publish incomingQos2Publish = new MqttIncomingQos2Publish(message, pubrecMessage);
 | 
			
		||||
                    MqttIncomingQos2Publish incomingQos2Publish = new MqttIncomingQos2Publish(message);
 | 
			
		||||
                    this.client.getQos2PendingIncomingPublishes().put(message.variableHeader().packetId(), incomingQos2Publish);
 | 
			
		||||
                    message.payload().retain();
 | 
			
		||||
                    incomingQos2Publish.startPubrecRetransmitTimer(this.client.getEventLoop().next(), this.client::sendAndFlushPacket);
 | 
			
		||||
 | 
			
		||||
                    channel.writeAndFlush(pubrecMessage);
 | 
			
		||||
                }
 | 
			
		||||
@ -248,7 +247,6 @@ final class MqttChannelHandler extends SimpleChannelInboundHandler<MqttMessage>
 | 
			
		||||
        if (this.client.getQos2PendingIncomingPublishes().containsKey(((MqttMessageIdVariableHeader) message.variableHeader()).messageId())) {
 | 
			
		||||
            MqttIncomingQos2Publish incomingQos2Publish = this.client.getQos2PendingIncomingPublishes().get(((MqttMessageIdVariableHeader) message.variableHeader()).messageId());
 | 
			
		||||
            this.invokeHandlersForIncomingPublish(incomingQos2Publish.getIncomingPublish());
 | 
			
		||||
            incomingQos2Publish.onPubrelReceived();
 | 
			
		||||
            this.client.getQos2PendingIncomingPublishes().remove(incomingQos2Publish.getIncomingPublish().variableHeader().packetId());
 | 
			
		||||
        }
 | 
			
		||||
        MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBCOMP, false, MqttQoS.AT_MOST_ONCE, false, 0);
 | 
			
		||||
 | 
			
		||||
@ -15,34 +15,17 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.mqtt;
 | 
			
		||||
 | 
			
		||||
import io.netty.channel.EventLoop;
 | 
			
		||||
import io.netty.handler.codec.mqtt.*;
 | 
			
		||||
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttPublishMessage;
 | 
			
		||||
 | 
			
		||||
final class MqttIncomingQos2Publish {
 | 
			
		||||
 | 
			
		||||
    private final MqttPublishMessage incomingPublish;
 | 
			
		||||
 | 
			
		||||
    private final RetransmissionHandler<MqttMessage> retransmissionHandler = new RetransmissionHandler<>();
 | 
			
		||||
 | 
			
		||||
    MqttIncomingQos2Publish(MqttPublishMessage incomingPublish, MqttMessage originalMessage) {
 | 
			
		||||
    MqttIncomingQos2Publish(MqttPublishMessage incomingPublish) {
 | 
			
		||||
        this.incomingPublish = incomingPublish;
 | 
			
		||||
 | 
			
		||||
        this.retransmissionHandler.setOriginalMessage(originalMessage);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    MqttPublishMessage getIncomingPublish() {
 | 
			
		||||
        return incomingPublish;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void startPubrecRetransmitTimer(EventLoop eventLoop, Consumer<Object> sendPacket) {
 | 
			
		||||
        this.retransmissionHandler.setHandle((fixedHeader, originalMessage) ->
 | 
			
		||||
                sendPacket.accept(new MqttMessage(fixedHeader, originalMessage.variableHeader())));
 | 
			
		||||
        this.retransmissionHandler.start(eventLoop);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void onPubrelReceived() {
 | 
			
		||||
        this.retransmissionHandler.stop();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user