Commit fa0e55f15b7675b2915f007afc03ba7d4f0498a2

Authored by YevhenBondarenko
1 parent 33c6aecc

process event onDeviceDeleted

... ... @@ -19,13 +19,12 @@ import io.netty.util.concurrent.Future;
19 19 import io.netty.util.concurrent.GenericFutureListener;
20 20 import lombok.RequiredArgsConstructor;
21 21 import lombok.extern.slf4j.Slf4j;
22   -import org.jetbrains.annotations.NotNull;
23 22 import org.thingsboard.server.common.data.Device;
24 23 import org.thingsboard.server.common.data.DeviceProfile;
25 24 import org.thingsboard.server.common.data.ResourceType;
  25 +import org.thingsboard.server.common.data.id.DeviceId;
26 26 import org.thingsboard.server.common.transport.SessionMsgListener;
27 27 import org.thingsboard.server.common.transport.TransportService;
28   -import org.thingsboard.server.common.transport.TransportServiceCallback;
29 28 import org.thingsboard.server.gen.transport.TransportProtos;
30 29 import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg;
31 30 import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeResponseMsg;
... ... @@ -109,4 +108,14 @@ public class LwM2mSessionMsgListener implements GenericFutureListener<Future<? s
109 108 this.handler.onResourceDelete(resourceDeleteMsgOpt);
110 109 }
111 110 }
  111 +
  112 + @Override
  113 + public void onDeviceDeleted(DeviceId deviceId) {
  114 + log.trace("[{}] Device on delete", deviceId);
  115 + try{
  116 + this.handler.onDeviceDelete(deviceId);
  117 + } catch (Exception e) {
  118 + log.error("", e);
  119 + }
  120 + }
112 121 }
... ...
... ... @@ -46,6 +46,7 @@ import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes;
46 46 import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
47 47 import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration;
48 48 import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
  49 +import org.thingsboard.server.common.data.id.DeviceId;
49 50 import org.thingsboard.server.common.data.id.TenantId;
50 51 import org.thingsboard.server.common.data.ota.OtaPackageUtil;
51 52 import org.thingsboard.server.common.transport.TransportService;
... ... @@ -73,6 +74,8 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MCancelObser
73 74 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MCancelObserveRequest;
74 75 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MDiscoverCallback;
75 76 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MDiscoverRequest;
  77 +import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MExecuteCallback;
  78 +import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MExecuteRequest;
76 79 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MLatchCallback;
77 80 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MObserveCallback;
78 81 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MObserveRequest;
... ... @@ -82,7 +85,6 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttrib
82 85 import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttributesRequest;
83 86 import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
84 87 import org.thingsboard.server.transport.lwm2m.server.ota.LwM2MOtaUpdateService;
85   -import org.thingsboard.server.transport.lwm2m.server.rpc.LwM2MRpcRequestHandler;
86 88 import org.thingsboard.server.transport.lwm2m.server.session.LwM2MSessionManager;
87 89 import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
88 90 import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
... ... @@ -131,6 +133,8 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
131 133
132 134 public LwM2mValueConverterImpl converter;
133 135
  136 + private static final String REBOOT_ID = "/3/0/4";
  137 +
134 138 private final TransportService transportService;
135 139 private final LwM2mTransportContext context;
136 140 private final LwM2MAttributesService attributesService;
... ... @@ -275,26 +279,30 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
275 279 public void unReg(Registration registration, Collection<Observation> observations) {
276 280 executor.submit(() -> {
277 281 LwM2mClient client = clientContext.getClientByEndpoint(registration.getEndpoint());
278   - try {
279   - logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
280   - clientContext.unregister(client, registration);
281   - SessionInfoProto sessionInfo = client.getSession();
282   - if (sessionInfo != null) {
283   - sessionManager.deregister(sessionInfo);
284   - sessionStore.remove(registration.getEndpoint());
285   - log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType());
286   - } else {
287   - log.error("Client close session: [{}] unReg [{}] name [{}] sessionInfo ", registration.getId(), registration.getEndpoint(), null);
288   - }
289   - } catch (LwM2MClientStateException stateException) {
290   - log.info("[{}] delete registration: [{}] {}.", registration.getEndpoint(), stateException.getState(), stateException.getMessage());
291   - } catch (Throwable t) {
292   - log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
293   - logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
294   - }
  282 + logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
  283 + doUnReg(registration, client);
295 284 });
296 285 }
297 286
  287 + private void doUnReg(Registration registration, LwM2mClient client) {
  288 + try {
  289 + clientContext.unregister(client, registration);
  290 + SessionInfoProto sessionInfo = client.getSession();
  291 + if (sessionInfo != null) {
  292 + sessionManager.deregister(sessionInfo);
  293 + sessionStore.remove(registration.getEndpoint());
  294 + log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType());
  295 + } else {
  296 + log.error("Client close session: [{}] unReg [{}] name [{}] sessionInfo ", registration.getId(), registration.getEndpoint(), null);
  297 + }
  298 + } catch (LwM2MClientStateException stateException) {
  299 + log.info("[{}] delete registration: [{}] {}.", registration.getEndpoint(), stateException.getState(), stateException.getMessage());
  300 + } catch (Throwable t) {
  301 + log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
  302 + logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
  303 + }
  304 + }
  305 +
298 306 @Override
299 307 public void onSleepingDev(Registration registration) {
300 308 log.debug("[{}] [{}] Received endpoint sleeping event", registration.getId(), registration.getEndpoint());
... ... @@ -391,6 +399,14 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl
391 399 }
392 400
393 401 @Override
  402 + public void onDeviceDelete(DeviceId deviceId) {
  403 + LwM2mClient client = clientContext.getClientByDeviceId(deviceId.getId());
  404 + TbLwM2MExecuteRequest request = TbLwM2MExecuteRequest.builder().versionedId(REBOOT_ID).timeout(clientContext.getRequestTimeout(client)).build();
  405 + defaultLwM2MDownlinkMsgHandler.sendExecuteRequest(client, request, new TbLwM2MExecuteCallback(logService, client, REBOOT_ID));
  406 + doUnReg(client.getRegistration(), client);
  407 + }
  408 +
  409 + @Override
394 410 public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) {
395 411 String idVer = resourceUpdateMsgOpt.getResourceKey();
396 412 TenantId tenantId = new TenantId(new UUID(resourceUpdateMsgOpt.getTenantIdMSB(), resourceUpdateMsgOpt.getTenantIdLSB()));
... ...
... ... @@ -23,6 +23,7 @@ import org.eclipse.leshan.core.response.ReadResponse;
23 23 import org.eclipse.leshan.server.registration.Registration;
24 24 import org.thingsboard.server.common.data.Device;
25 25 import org.thingsboard.server.common.data.DeviceProfile;
  26 +import org.thingsboard.server.common.data.id.DeviceId;
26 27 import org.thingsboard.server.gen.transport.TransportProtos;
27 28 import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
28 29 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
... ... @@ -48,6 +49,8 @@ public interface LwM2mUplinkMsgHandler {
48 49
49 50 void onDeviceUpdate(TransportProtos.SessionInfoProto sessionInfo, Device device, Optional<DeviceProfile> deviceProfileOpt);
50 51
  52 + void onDeviceDelete(DeviceId deviceId);
  53 +
51 54 void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt);
52 55
53 56 void onResourceDelete(TransportProtos.ResourceDeleteMsg resourceDeleteMsgOpt);
... ...