sparkplug: connection2
This commit is contained in:
		
							parent
							
								
									1bf02b75f2
								
							
						
					
					
						commit
						81c484d745
					
				@ -15,15 +15,12 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.transport.mqtt.session;
 | 
			
		||||
 | 
			
		||||
import io.netty.channel.ChannelFuture;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttMessage;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.thingsboard.server.common.data.DeviceProfile;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.rpc.RpcStatus;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgListener;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportServiceCallback;
 | 
			
		||||
import org.thingsboard.server.common.transport.auth.TransportDeviceInfo;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto;
 | 
			
		||||
@ -32,17 +29,17 @@ import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ConcurrentMap;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Created by ashvayka on 19.01.17.
 | 
			
		||||
 * Created by nickAS21 on 08.12.22
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class SparkplugNodeSessionCtx extends MqttDeviceAwareSessionContext implements SessionMsgListener {
 | 
			
		||||
public class SparkplugSessionCtx extends MqttDeviceAwareSessionContext implements SessionMsgListener {
 | 
			
		||||
 | 
			
		||||
    private final GatewaySessionHandler parent;
 | 
			
		||||
    private final SparkplugNodeSessionHandler parent;
 | 
			
		||||
    private final TransportService transportService;
 | 
			
		||||
 | 
			
		||||
    public SparkplugNodeSessionCtx(GatewaySessionHandler parent, TransportDeviceInfo deviceInfo,
 | 
			
		||||
                                   DeviceProfile deviceProfile, ConcurrentMap<MqttTopicMatcher, Integer> mqttQoSMap,
 | 
			
		||||
                                   TransportService transportService) {
 | 
			
		||||
    public SparkplugSessionCtx(SparkplugNodeSessionHandler parent, TransportDeviceInfo deviceInfo,
 | 
			
		||||
                               DeviceProfile deviceProfile, ConcurrentMap<MqttTopicMatcher, Integer> mqttQoSMap,
 | 
			
		||||
                               TransportService transportService) {
 | 
			
		||||
        super(UUID.randomUUID(), mqttQoSMap);
 | 
			
		||||
        this.parent = parent;
 | 
			
		||||
        setSessionInfo(SessionInfoProto.newBuilder()
 | 
			
		||||
@ -80,50 +77,50 @@ public class SparkplugNodeSessionCtx extends MqttDeviceAwareSessionContext imple
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onGetAttributesResponse(TransportProtos.GetAttributeResponseMsg response) {
 | 
			
		||||
        try {
 | 
			
		||||
            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), response).ifPresent(parent::writeAndFlush);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
        }
 | 
			
		||||
//        try {
 | 
			
		||||
//            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), response).ifPresent(parent::writeAndFlush);
 | 
			
		||||
//        } catch (Exception e) {
 | 
			
		||||
//            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
//        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onAttributeUpdate(UUID sessionId, TransportProtos.AttributeUpdateNotificationMsg notification) {
 | 
			
		||||
        log.trace("[{}] Received attributes update notification to device", sessionId);
 | 
			
		||||
        try {
 | 
			
		||||
            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), notification).ifPresent(parent::writeAndFlush);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
        }
 | 
			
		||||
//        log.trace("[{}] Received attributes update notification to device", sessionId);
 | 
			
		||||
//        try {
 | 
			
		||||
//            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), notification).ifPresent(parent::writeAndFlush);
 | 
			
		||||
//        } catch (Exception e) {
 | 
			
		||||
//            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
//        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onToDeviceRpcRequest(UUID sessionId, TransportProtos.ToDeviceRpcRequestMsg request) {
 | 
			
		||||
        log.trace("[{}] Received RPC command to device", sessionId);
 | 
			
		||||
        try {
 | 
			
		||||
            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), request).ifPresent(
 | 
			
		||||
                    payload -> {
 | 
			
		||||
                        ChannelFuture channelFuture = parent.writeAndFlush(payload);
 | 
			
		||||
                        if (request.getPersisted()) {
 | 
			
		||||
                            channelFuture.addListener(result -> {
 | 
			
		||||
                                if (result.cause() == null) {
 | 
			
		||||
                                    if (!isAckExpected(payload)) {
 | 
			
		||||
                                        transportService.process(getSessionInfo(), request, RpcStatus.DELIVERED, TransportServiceCallback.EMPTY);
 | 
			
		||||
                                    } else if (request.getPersisted()) {
 | 
			
		||||
                                        transportService.process(getSessionInfo(), request, RpcStatus.SENT, TransportServiceCallback.EMPTY);
 | 
			
		||||
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
            );
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            transportService.process(getSessionInfo(),
 | 
			
		||||
                    TransportProtos.ToDeviceRpcResponseMsg.newBuilder()
 | 
			
		||||
                            .setRequestId(request.getRequestId()).setError("Failed to convert device RPC command to MQTT msg").build(), TransportServiceCallback.EMPTY);
 | 
			
		||||
            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
        }
 | 
			
		||||
//        log.trace("[{}] Received RPC command to device", sessionId);
 | 
			
		||||
//        try {
 | 
			
		||||
//            parent.getPayloadAdaptor().convertToGatewayPublish(this, getDeviceInfo().getDeviceName(), request).ifPresent(
 | 
			
		||||
//                    payload -> {
 | 
			
		||||
//                        ChannelFuture channelFuture = parent.writeAndFlush(payload);
 | 
			
		||||
//                        if (request.getPersisted()) {
 | 
			
		||||
//                            channelFuture.addListener(result -> {
 | 
			
		||||
//                                if (result.cause() == null) {
 | 
			
		||||
//                                    if (!isAckExpected(payload)) {
 | 
			
		||||
//                                        transportService.process(getSessionInfo(), request, RpcStatus.DELIVERED, TransportServiceCallback.EMPTY);
 | 
			
		||||
//                                    } else if (request.getPersisted()) {
 | 
			
		||||
//                                        transportService.process(getSessionInfo(), request, RpcStatus.SENT, TransportServiceCallback.EMPTY);
 | 
			
		||||
//
 | 
			
		||||
//                                    }
 | 
			
		||||
//                                }
 | 
			
		||||
//                            });
 | 
			
		||||
//                        }
 | 
			
		||||
//                    }
 | 
			
		||||
//            );
 | 
			
		||||
//        } catch (Exception e) {
 | 
			
		||||
//            transportService.process(getSessionInfo(),
 | 
			
		||||
//                    TransportProtos.ToDeviceRpcResponseMsg.newBuilder()
 | 
			
		||||
//                            .setRequestId(request.getRequestId()).setError("Failed to convert device RPC command to MQTT msg").build(), TransportServiceCallback.EMPTY);
 | 
			
		||||
//            log.trace("[{}] Failed to convert device attributes response to MQTT msg", sessionId, e);
 | 
			
		||||
//        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user