Commit 06c4f7a39617d97c78f65b19b60d7692f79a626c
Merge branch 'feature/lwm2m-refactoring-downlink' of https://github.com/thingsbo…
…ard/thingsboard into feature/lwm2m-refactoring-downlink # Conflicts: # common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/downlink/TbLwM2MReadCallback.java
Showing
11 changed files
with
46 additions
and
64 deletions
@@ -18,11 +18,11 @@ package org.thingsboard.server.transport.lwm2m.server.client; | @@ -18,11 +18,11 @@ package org.thingsboard.server.transport.lwm2m.server.client; | ||
18 | import org.eclipse.leshan.server.registration.Registration; | 18 | import org.eclipse.leshan.server.registration.Registration; |
19 | import org.thingsboard.server.common.data.DeviceProfile; | 19 | import org.thingsboard.server.common.data.DeviceProfile; |
20 | import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration; | 20 | import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration; |
21 | -import org.thingsboard.server.common.data.id.TenantId; | ||
22 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; | 21 | import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse; |
23 | import org.thingsboard.server.gen.transport.TransportProtos; | 22 | import org.thingsboard.server.gen.transport.TransportProtos; |
24 | 23 | ||
25 | import java.util.Collection; | 24 | import java.util.Collection; |
25 | +import java.util.Optional; | ||
26 | import java.util.Set; | 26 | import java.util.Set; |
27 | import java.util.UUID; | 27 | import java.util.UUID; |
28 | 28 | ||
@@ -34,7 +34,7 @@ public interface LwM2mClientContext { | @@ -34,7 +34,7 @@ public interface LwM2mClientContext { | ||
34 | 34 | ||
35 | LwM2mClient getClientBySessionInfo(TransportProtos.SessionInfoProto sessionInfo); | 35 | LwM2mClient getClientBySessionInfo(TransportProtos.SessionInfoProto sessionInfo); |
36 | 36 | ||
37 | - void register(LwM2mClient lwM2MClient, Registration registration) throws LwM2MClientStateException; | 37 | + Optional<TransportProtos.SessionInfoProto> register(LwM2mClient lwM2MClient, Registration registration) throws LwM2MClientStateException; |
38 | 38 | ||
39 | void updateRegistration(LwM2mClient client, Registration registration) throws LwM2MClientStateException; | 39 | void updateRegistration(LwM2mClient client, Registration registration) throws LwM2MClientStateException; |
40 | 40 |
@@ -60,12 +60,14 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | @@ -60,12 +60,14 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | ||
60 | } | 60 | } |
61 | 61 | ||
62 | @Override | 62 | @Override |
63 | - public void register(LwM2mClient lwM2MClient, Registration registration) throws LwM2MClientStateException { | 63 | + public Optional<TransportProtos.SessionInfoProto> register(LwM2mClient lwM2MClient, Registration registration) throws LwM2MClientStateException { |
64 | + TransportProtos.SessionInfoProto oldSession = null; | ||
64 | lwM2MClient.lock(); | 65 | lwM2MClient.lock(); |
65 | try { | 66 | try { |
66 | if (LwM2MClientState.UNREGISTERED.equals(lwM2MClient.getState())) { | 67 | if (LwM2MClientState.UNREGISTERED.equals(lwM2MClient.getState())) { |
67 | throw new LwM2MClientStateException(lwM2MClient.getState(), "Client is in invalid state."); | 68 | throw new LwM2MClientStateException(lwM2MClient.getState(), "Client is in invalid state."); |
68 | } | 69 | } |
70 | + oldSession = lwM2MClient.getSession(); | ||
69 | TbLwM2MSecurityInfo securityInfo = securityStore.getTbLwM2MSecurityInfoByEndpoint(lwM2MClient.getEndpoint()); | 71 | TbLwM2MSecurityInfo securityInfo = securityStore.getTbLwM2MSecurityInfoByEndpoint(lwM2MClient.getEndpoint()); |
70 | if (securityInfo.getSecurityMode() != null) { | 72 | if (securityInfo.getSecurityMode() != null) { |
71 | if (securityInfo.getDeviceProfile() != null) { | 73 | if (securityInfo.getDeviceProfile() != null) { |
@@ -89,6 +91,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | @@ -89,6 +91,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext { | ||
89 | } finally { | 91 | } finally { |
90 | lwM2MClient.unlock(); | 92 | lwM2MClient.unlock(); |
91 | } | 93 | } |
94 | + return Optional.ofNullable(oldSession); | ||
92 | } | 95 | } |
93 | 96 | ||
94 | @Override | 97 | @Override |
@@ -15,12 +15,13 @@ | @@ -15,12 +15,13 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.transport.lwm2m.server.downlink; | 16 | package org.thingsboard.server.transport.lwm2m.server.downlink; |
17 | 17 | ||
18 | -import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | 18 | +import lombok.extern.slf4j.Slf4j; |
19 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 19 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
20 | +import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | ||
20 | 21 | ||
21 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.LOG_LWM2M_INFO; | 22 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.LOG_LWM2M_INFO; |
22 | -import static org.thingsboard.server.transport.lwm2m.server.LwM2mOperationType.OBSERVE_CANCEL_ALL; | ||
23 | 23 | ||
24 | +@Slf4j | ||
24 | public class TbLwM2MCancelAllObserveCallback extends AbstractTbLwM2MRequestCallback<TbLwM2MCancelAllRequest, Integer> { | 25 | public class TbLwM2MCancelAllObserveCallback extends AbstractTbLwM2MRequestCallback<TbLwM2MCancelAllRequest, Integer> { |
25 | 26 | ||
26 | public TbLwM2MCancelAllObserveCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client) { | 27 | public TbLwM2MCancelAllObserveCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client) { |
@@ -29,7 +30,8 @@ public class TbLwM2MCancelAllObserveCallback extends AbstractTbLwM2MRequestCallb | @@ -29,7 +30,8 @@ public class TbLwM2MCancelAllObserveCallback extends AbstractTbLwM2MRequestCallb | ||
29 | 30 | ||
30 | @Override | 31 | @Override |
31 | public void onSuccess(TbLwM2MCancelAllRequest request, Integer canceledSubscriptionsCount) { | 32 | public void onSuccess(TbLwM2MCancelAllRequest request, Integer canceledSubscriptionsCount) { |
32 | - String observeCancelMsg = String.format("%s: type operation %s paths: count: %d", LOG_LWM2M_INFO, OBSERVE_CANCEL_ALL.name(), canceledSubscriptionsCount); | 33 | + log.trace("[{}] Cancel of all observations was successful: {}", client.getEndpoint(), canceledSubscriptionsCount); |
34 | + handler.logToTelemetry(client, String.format("[%s]: Cancel of all observations was successful. Result: [%s]", LOG_LWM2M_INFO, canceledSubscriptionsCount)); | ||
33 | } | 35 | } |
34 | 36 | ||
35 | } | 37 | } |
@@ -15,12 +15,14 @@ | @@ -15,12 +15,14 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.transport.lwm2m.server.downlink; | 16 | package org.thingsboard.server.transport.lwm2m.server.downlink; |
17 | 17 | ||
18 | +import lombok.extern.slf4j.Slf4j; | ||
18 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | 19 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; |
19 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 20 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
20 | 21 | ||
21 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.LOG_LWM2M_INFO; | 22 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.LOG_LWM2M_INFO; |
22 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mOperationType.OBSERVE_CANCEL; | 23 | import static org.thingsboard.server.transport.lwm2m.server.LwM2mOperationType.OBSERVE_CANCEL; |
23 | 24 | ||
25 | +@Slf4j | ||
24 | public class TbLwM2MCancelObserveCallback extends AbstractTbLwM2MRequestCallback<TbLwM2MCancelObserveRequest, Integer> { | 26 | public class TbLwM2MCancelObserveCallback extends AbstractTbLwM2MRequestCallback<TbLwM2MCancelObserveRequest, Integer> { |
25 | 27 | ||
26 | private final String versionedId; | 28 | private final String versionedId; |
@@ -32,7 +34,8 @@ public class TbLwM2MCancelObserveCallback extends AbstractTbLwM2MRequestCallback | @@ -32,7 +34,8 @@ public class TbLwM2MCancelObserveCallback extends AbstractTbLwM2MRequestCallback | ||
32 | 34 | ||
33 | @Override | 35 | @Override |
34 | public void onSuccess(TbLwM2MCancelObserveRequest request, Integer canceledSubscriptionsCount) { | 36 | public void onSuccess(TbLwM2MCancelObserveRequest request, Integer canceledSubscriptionsCount) { |
35 | - String observeCancelMsg = String.format("%s: type operation %s paths: %s count: %d", LOG_LWM2M_INFO, OBSERVE_CANCEL.name(), versionedId, canceledSubscriptionsCount); | 37 | + log.trace("[{}] Cancel observation of [{}] successful: {}", client.getEndpoint(), versionedId, canceledSubscriptionsCount); |
38 | + handler.logToTelemetry(client, String.format("[%s]: Cancel Observe for [%s] successful. Result: [%s]", LOG_LWM2M_INFO, versionedId, canceledSubscriptionsCount)); | ||
36 | } | 39 | } |
37 | 40 | ||
38 | } | 41 | } |
@@ -20,18 +20,10 @@ import org.eclipse.leshan.core.response.ExecuteResponse; | @@ -20,18 +20,10 @@ import org.eclipse.leshan.core.response.ExecuteResponse; | ||
20 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | 20 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; |
21 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 21 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
22 | 22 | ||
23 | -public class TbLwM2MExecuteCallback extends AbstractTbLwM2MRequestCallback<ExecuteRequest, ExecuteResponse> { | ||
24 | - | ||
25 | - private final String targetId; | 23 | +public class TbLwM2MExecuteCallback extends TbLwM2MTargetedCallback<ExecuteRequest, ExecuteResponse> { |
26 | 24 | ||
27 | public TbLwM2MExecuteCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { | 25 | public TbLwM2MExecuteCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { |
28 | - super(handler, client); | ||
29 | - this.targetId = targetId; | ||
30 | - } | ||
31 | - | ||
32 | - @Override | ||
33 | - public void onSuccess(ExecuteRequest request, ExecuteResponse response) { | ||
34 | - //TODO: separate callback wrapper for the RPC calls. | 26 | + super(handler, client, targetId); |
35 | } | 27 | } |
36 | 28 | ||
37 | } | 29 | } |
@@ -17,14 +17,10 @@ package org.thingsboard.server.transport.lwm2m.server.downlink; | @@ -17,14 +17,10 @@ package org.thingsboard.server.transport.lwm2m.server.downlink; | ||
17 | 17 | ||
18 | import lombok.extern.slf4j.Slf4j; | 18 | import lombok.extern.slf4j.Slf4j; |
19 | import org.eclipse.leshan.core.request.ObserveRequest; | 19 | import org.eclipse.leshan.core.request.ObserveRequest; |
20 | -import org.eclipse.leshan.core.request.ReadRequest; | ||
21 | import org.eclipse.leshan.core.response.ObserveResponse; | 20 | import org.eclipse.leshan.core.response.ObserveResponse; |
22 | -import org.eclipse.leshan.core.response.ReadResponse; | ||
23 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | 21 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; |
24 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 22 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
25 | 23 | ||
26 | -import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.LOG_LWM2M_INFO; | ||
27 | - | ||
28 | @Slf4j | 24 | @Slf4j |
29 | public class TbLwM2MObserveCallback extends TbLwM2MTargetedCallback<ObserveRequest, ObserveResponse> { | 25 | public class TbLwM2MObserveCallback extends TbLwM2MTargetedCallback<ObserveRequest, ObserveResponse> { |
30 | 26 | ||
@@ -35,6 +31,6 @@ public class TbLwM2MObserveCallback extends TbLwM2MTargetedCallback<ObserveReque | @@ -35,6 +31,6 @@ public class TbLwM2MObserveCallback extends TbLwM2MTargetedCallback<ObserveReque | ||
35 | @Override | 31 | @Override |
36 | public void onSuccess(ObserveRequest request, ObserveResponse response) { | 32 | public void onSuccess(ObserveRequest request, ObserveResponse response) { |
37 | super.onSuccess(request, response); | 33 | super.onSuccess(request, response); |
38 | - handler.onUpdateValueAfterReadResponse(client.getRegistration(), targetId, response, null); | 34 | + handler.onUpdateValueAfterReadResponse(client.getRegistration(), versionedId, response, null); |
39 | } | 35 | } |
40 | } | 36 | } |
@@ -31,7 +31,7 @@ public class TbLwM2MReadCallback extends TbLwM2MTargetedCallback<ReadRequest, Re | @@ -31,7 +31,7 @@ public class TbLwM2MReadCallback extends TbLwM2MTargetedCallback<ReadRequest, Re | ||
31 | @Override | 31 | @Override |
32 | public void onSuccess(ReadRequest request, ReadResponse response) { | 32 | public void onSuccess(ReadRequest request, ReadResponse response) { |
33 | super.onSuccess(request, response); | 33 | super.onSuccess(request, response); |
34 | - handler.onUpdateValueAfterReadResponse(client.getRegistration(), targetId, response, null); | 34 | + handler.onUpdateValueAfterReadResponse(client.getRegistration(), versionedId, response, null); |
35 | } | 35 | } |
36 | 36 | ||
37 | } | 37 | } |
@@ -16,8 +16,6 @@ | @@ -16,8 +16,6 @@ | ||
16 | package org.thingsboard.server.transport.lwm2m.server.downlink; | 16 | package org.thingsboard.server.transport.lwm2m.server.downlink; |
17 | 17 | ||
18 | import lombok.extern.slf4j.Slf4j; | 18 | import lombok.extern.slf4j.Slf4j; |
19 | -import org.eclipse.leshan.core.request.ReadRequest; | ||
20 | -import org.eclipse.leshan.core.response.ReadResponse; | ||
21 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 19 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
22 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | 20 | import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; |
23 | 21 | ||
@@ -26,19 +24,19 @@ import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.L | @@ -26,19 +24,19 @@ import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.L | ||
26 | @Slf4j | 24 | @Slf4j |
27 | public abstract class TbLwM2MTargetedCallback<R, T> extends AbstractTbLwM2MRequestCallback<R, T> { | 25 | public abstract class TbLwM2MTargetedCallback<R, T> extends AbstractTbLwM2MRequestCallback<R, T> { |
28 | 26 | ||
29 | - protected final String targetId; | 27 | + protected final String versionedId; |
30 | 28 | ||
31 | - public TbLwM2MTargetedCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { | 29 | + public TbLwM2MTargetedCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String versionedId) { |
32 | super(handler, client); | 30 | super(handler, client); |
33 | - this.targetId = targetId; | 31 | + this.versionedId = versionedId; |
34 | } | 32 | } |
35 | 33 | ||
36 | @Override | 34 | @Override |
37 | public void onSuccess(R request, T response) { | 35 | public void onSuccess(R request, T response) { |
38 | //TODO convert camelCase to "camel case" using .split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])") | 36 | //TODO convert camelCase to "camel case" using .split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])") |
39 | String requestName = request.getClass().getSimpleName(); | 37 | String requestName = request.getClass().getSimpleName(); |
40 | - log.trace("[{}] {} [{}] successful: {}", client.getEndpoint(), requestName, targetId, response); | ||
41 | - handler.logToTelemetry(client, String.format("[%s]: %s [%s] successful. Result: [%s]", LOG_LWM2M_INFO, requestName, targetId, response)); | 38 | + log.trace("[{}] {} [{}] successful: {}", client.getEndpoint(), requestName, versionedId, response); |
39 | + handler.logToTelemetry(client, String.format("[%s]: %s [%s] successful. Result: [%s]", LOG_LWM2M_INFO, requestName, versionedId, response)); | ||
42 | } | 40 | } |
43 | 41 | ||
44 | } | 42 | } |
@@ -17,21 +17,13 @@ package org.thingsboard.server.transport.lwm2m.server.downlink; | @@ -17,21 +17,13 @@ package org.thingsboard.server.transport.lwm2m.server.downlink; | ||
17 | 17 | ||
18 | import org.eclipse.leshan.core.request.WriteAttributesRequest; | 18 | import org.eclipse.leshan.core.request.WriteAttributesRequest; |
19 | import org.eclipse.leshan.core.response.WriteAttributesResponse; | 19 | import org.eclipse.leshan.core.response.WriteAttributesResponse; |
20 | -import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | ||
21 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 20 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
21 | +import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | ||
22 | 22 | ||
23 | -public class TbLwM2MWriteAttributesCallback extends AbstractTbLwM2MRequestCallback<WriteAttributesRequest, WriteAttributesResponse> { | ||
24 | - | ||
25 | - private final String targetId; | 23 | +public class TbLwM2MWriteAttributesCallback extends TbLwM2MTargetedCallback<WriteAttributesRequest, WriteAttributesResponse> { |
26 | 24 | ||
27 | public TbLwM2MWriteAttributesCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { | 25 | public TbLwM2MWriteAttributesCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { |
28 | - super(handler, client); | ||
29 | - this.targetId = targetId; | ||
30 | - } | ||
31 | - | ||
32 | - @Override | ||
33 | - public void onSuccess(WriteAttributesRequest request, WriteAttributesResponse response) { | ||
34 | - //TODO: separate callback wrapper for the RPC calls. | 26 | + super(handler, client, targetId); |
35 | } | 27 | } |
36 | 28 | ||
37 | } | 29 | } |
@@ -15,25 +15,21 @@ | @@ -15,25 +15,21 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.transport.lwm2m.server.downlink; | 16 | package org.thingsboard.server.transport.lwm2m.server.downlink; |
17 | 17 | ||
18 | -import lombok.Setter; | ||
19 | import org.eclipse.leshan.core.request.WriteRequest; | 18 | import org.eclipse.leshan.core.request.WriteRequest; |
20 | import org.eclipse.leshan.core.response.WriteResponse; | 19 | import org.eclipse.leshan.core.response.WriteResponse; |
21 | -import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | ||
22 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; | 20 | import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient; |
21 | +import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler; | ||
23 | 22 | ||
24 | -public class TbLwM2MWriteResponseCallback extends AbstractTbLwM2MRequestCallback<WriteRequest, WriteResponse> { | ||
25 | - | ||
26 | - private final String targetId; | 23 | +public class TbLwM2MWriteResponseCallback extends TbLwM2MTargetedCallback<WriteRequest, WriteResponse> { |
27 | 24 | ||
28 | public TbLwM2MWriteResponseCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { | 25 | public TbLwM2MWriteResponseCallback(LwM2mUplinkMsgHandler handler, LwM2mClient client, String targetId) { |
29 | - super(handler, client); | ||
30 | - this.targetId = targetId; | 26 | + super(handler, client, targetId); |
31 | } | 27 | } |
32 | 28 | ||
33 | @Override | 29 | @Override |
34 | public void onSuccess(WriteRequest request, WriteResponse response) { | 30 | public void onSuccess(WriteRequest request, WriteResponse response) { |
35 | - handler.onWriteResponseOk(client, targetId, request); | ||
36 | - //TODO: separate callback wrapper for the RPC calls. | 31 | + super.onSuccess(request, response); |
32 | + handler.onWriteResponseOk(client, versionedId, request); | ||
37 | } | 33 | } |
38 | 34 | ||
39 | } | 35 | } |
@@ -201,7 +201,11 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -201,7 +201,11 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
201 | try { | 201 | try { |
202 | log.warn("[{}] [{{}] Client: create after Registration", registration.getEndpoint(), registration.getId()); | 202 | log.warn("[{}] [{{}] Client: create after Registration", registration.getEndpoint(), registration.getId()); |
203 | if (lwM2MClient != null) { | 203 | if (lwM2MClient != null) { |
204 | - this.clientContext.register(lwM2MClient, registration); | 204 | + Optional<SessionInfoProto> oldSessionInfo = this.clientContext.register(lwM2MClient, registration); |
205 | + if (oldSessionInfo.isPresent()) { | ||
206 | + log.info("[{}] Closing old session: {}", registration.getEndpoint(), new UUID(oldSessionInfo.get().getSessionIdMSB(), oldSessionInfo.get().getSessionIdLSB())); | ||
207 | + closeSession(oldSessionInfo.get()); | ||
208 | + } | ||
205 | this.logToTelemetry(lwM2MClient, LOG_LWM2M_INFO + ": Client registered with registration id: " + registration.getId()); | 209 | this.logToTelemetry(lwM2MClient, LOG_LWM2M_INFO + ": Client registered with registration id: " + registration.getId()); |
206 | SessionInfoProto sessionInfo = lwM2MClient.getSession(); | 210 | SessionInfoProto sessionInfo = lwM2MClient.getSession(); |
207 | transportService.registerAsyncSession(sessionInfo, new LwM2mSessionMsgListener(this, rpcHandler, sessionInfo)); | 211 | transportService.registerAsyncSession(sessionInfo, new LwM2mSessionMsgListener(this, rpcHandler, sessionInfo)); |
@@ -278,8 +282,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -278,8 +282,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
278 | clientContext.unregister(client, registration); | 282 | clientContext.unregister(client, registration); |
279 | SessionInfoProto sessionInfo = client.getSession(); | 283 | SessionInfoProto sessionInfo = client.getSession(); |
280 | if (sessionInfo != null) { | 284 | if (sessionInfo != null) { |
281 | - transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(SessionEvent.CLOSED), null); | ||
282 | - transportService.deregisterSession(sessionInfo); | 285 | + closeSession(sessionInfo); |
283 | sessionStore.remove(registration.getEndpoint()); | 286 | sessionStore.remove(registration.getEndpoint()); |
284 | log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType()); | 287 | log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType()); |
285 | } else { | 288 | } else { |
@@ -294,6 +297,11 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -294,6 +297,11 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
294 | }); | 297 | }); |
295 | } | 298 | } |
296 | 299 | ||
300 | + public void closeSession(SessionInfoProto sessionInfo) { | ||
301 | + transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(SessionEvent.CLOSED), null); | ||
302 | + transportService.deregisterSession(sessionInfo); | ||
303 | + } | ||
304 | + | ||
297 | @Override | 305 | @Override |
298 | public void onSleepingDev(Registration registration) { | 306 | public void onSleepingDev(Registration registration) { |
299 | log.info("[{}] [{}] Received endpoint Sleeping version event", registration.getId(), registration.getEndpoint()); | 307 | log.info("[{}] [{}] Received endpoint Sleeping version event", registration.getId(), registration.getEndpoint()); |
@@ -447,8 +455,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -447,8 +455,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
447 | */ | 455 | */ |
448 | @Override | 456 | @Override |
449 | public void doDisconnect(SessionInfoProto sessionInfo) { | 457 | public void doDisconnect(SessionInfoProto sessionInfo) { |
450 | - transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(SessionEvent.CLOSED), null); | ||
451 | - transportService.deregisterSession(sessionInfo); | 458 | + closeSession(sessionInfo); |
452 | } | 459 | } |
453 | 460 | ||
454 | /** | 461 | /** |
@@ -613,7 +620,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -613,7 +620,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
613 | * #3 If fr_update -> UpdateFirmware | 620 | * #3 If fr_update -> UpdateFirmware |
614 | * #4 updateAttrTelemetry | 621 | * #4 updateAttrTelemetry |
615 | * | 622 | * |
616 | - * @param lwM2MClient - Registration LwM2M Client | 623 | + * @param lwM2MClient - Registration LwM2M Client |
617 | * @param lwM2mResource - LwM2mSingleResource response.getContent() | 624 | * @param lwM2mResource - LwM2mSingleResource response.getContent() |
618 | * @param path - resource | 625 | * @param path - resource |
619 | */ | 626 | */ |
@@ -811,13 +818,6 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -811,13 +818,6 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
811 | return lwm2mResourceValue; | 818 | return lwm2mResourceValue; |
812 | } | 819 | } |
813 | 820 | ||
814 | - /** | ||
815 | - * Update resource (attribute) value on thingsboard after update value in client | ||
816 | - * | ||
817 | - * @param registration - | ||
818 | - * @param path - | ||
819 | - * @param request - | ||
820 | - */ | ||
821 | @Override | 821 | @Override |
822 | public void onWriteResponseOk(LwM2mClient client, String path, WriteRequest request) { | 822 | public void onWriteResponseOk(LwM2mClient client, String path, WriteRequest request) { |
823 | if (request.getNode() instanceof LwM2mResource) { | 823 | if (request.getNode() instanceof LwM2mResource) { |
@@ -982,7 +982,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | @@ -982,7 +982,7 @@ public class DefaultLwM2MUplinkMsgHandler implements LwM2mUplinkMsgHandler { | ||
982 | * Get path to resource from profile equal keyName | 982 | * Get path to resource from profile equal keyName |
983 | * | 983 | * |
984 | * @param sessionInfo - | 984 | * @param sessionInfo - |
985 | - * @param keyName - | 985 | + * @param keyName - |
986 | * @return - | 986 | * @return - |
987 | */ | 987 | */ |
988 | @Override | 988 | @Override |