Browse Source

Update device and session infos in context

pull/3767/head
Viacheslav Kukhtyn 6 years ago
committed by Andrew Shvayka
parent
commit
52d7d790f6
  1. 2
      common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java
  2. 4
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
  3. 5
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java
  4. 2
      common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java
  5. 2
      common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java
  6. 10
      common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java

2
common/message/src/main/java/org/thingsboard/server/common/msg/session/SessionContext.java

@ -28,5 +28,5 @@ public interface SessionContext {
void onProfileUpdate(DeviceProfile deviceProfile);
void onDeviceUpdate(Device device);
void onDeviceProfileUpdate(Device device);
}

4
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java

@ -706,7 +706,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
}
@Override
public void onDeviceUpdate(Device device) {
deviceSessionCtx.onDeviceUpdate(device);
public void onDeviceProfileUpdate(Device device) {
deviceSessionCtx.onDeviceProfileUpdate(device);
}
}

5
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/DeviceSessionCtx.java

@ -20,6 +20,7 @@ import io.netty.channel.ChannelHandlerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.DeviceTransportType;
import org.thingsboard.server.common.data.TransportPayloadType;
@ -113,6 +114,10 @@ public class DeviceSessionCtx extends MqttDeviceAwareSessionContext {
updateTopicFilters(deviceProfile);
}
@Override
public void onDeviceProfileUpdate(Device device) {
super.onDeviceProfileUpdate(device);
}
private void updateTopicFilters(DeviceProfile deviceProfile) {
DeviceProfileTransportConfiguration transportConfiguration = deviceProfile.getProfileData().getTransportConfiguration();

2
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java

@ -41,6 +41,6 @@ public interface SessionMsgListener {
default void onProfileUpdate(DeviceProfile deviceProfile) {
}
default void onDeviceUpdate(Device device) {
default void onDeviceProfileUpdate(Device device) {
}
}

2
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java

@ -689,7 +689,7 @@ public class DefaultTransportService implements TransportService {
&& md.getSessionInfo().getDeviceIdLSB() == deviceIdLSB)
&& (md.getSessionInfo().getDeviceProfileIdMSB() != deviceProfileIdMSB
&& md.getSessionInfo().getDeviceProfileIdLSB() != deviceProfileIdLSB)) {
transportCallbackExecutor.submit(() -> md.getListener().onDeviceUpdate(device));
transportCallbackExecutor.submit(() -> md.getListener().onDeviceProfileUpdate(device));
}
});
}

10
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/session/DeviceAwareSessionContext.java

@ -18,6 +18,7 @@ package org.thingsboard.server.common.transport.session;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.id.DeviceId;
@ -65,9 +66,14 @@ public abstract class DeviceAwareSessionContext implements SessionContext {
this.sessionInfo = TransportProtos.SessionInfoProto.newBuilder().mergeFrom(sessionInfo).setDeviceType(deviceProfile.getName()).build();
}
@Override
public void onDeviceUpdate(Device device) {
public void onDeviceProfileUpdate(Device device) {
this.deviceInfo.setDeviceProfileId(device.getDeviceProfileId());
this.deviceInfo.setDeviceType(device.getType());
this.sessionInfo = TransportProtos.SessionInfoProto.newBuilder().mergeFrom(sessionInfo)
.setDeviceProfileIdMSB(device.getDeviceProfileId().getId().getMostSignificantBits())
.setDeviceProfileIdLSB(device.getDeviceProfileId().getId().getLeastSignificantBits())
.setDeviceType(device.getType())
.build();
}
public boolean isConnected() {

Loading…
Cancel
Save