Merge pull request #5453 from YevhenBondarenko/lwm2m-improvements
This commit is contained in:
parent
862bc7f455
commit
8908d7d8f5
@ -719,7 +719,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
|
|||||||
void processCredentialsUpdate(TbActorMsg msg) {
|
void processCredentialsUpdate(TbActorMsg msg) {
|
||||||
if (((DeviceCredentialsUpdateNotificationMsg) msg).getDeviceCredentials().getCredentialsType() == DeviceCredentialsType.LWM2M_CREDENTIALS) {
|
if (((DeviceCredentialsUpdateNotificationMsg) msg).getDeviceCredentials().getCredentialsType() == DeviceCredentialsType.LWM2M_CREDENTIALS) {
|
||||||
sessions.forEach((k, v) -> {
|
sessions.forEach((k, v) -> {
|
||||||
notifyTransportAboutProfileUpdate(k, v, ((DeviceCredentialsUpdateNotificationMsg) msg).getDeviceCredentials());
|
notifyTransportAboutDeviceCredentialsUpdate(k, v, ((DeviceCredentialsUpdateNotificationMsg) msg).getDeviceCredentials());
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
sessions.forEach((sessionId, sessionMd) -> notifyTransportAboutClosedSession(sessionId, sessionMd, "device credentials updated!"));
|
sessions.forEach((sessionId, sessionMd) -> notifyTransportAboutClosedSession(sessionId, sessionMd, "device credentials updated!"));
|
||||||
@ -747,7 +747,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
|
|||||||
systemContext.getTbCoreToTransportService().process(sessionMd.getSessionInfo().getNodeId(), msg);
|
systemContext.getTbCoreToTransportService().process(sessionMd.getSessionInfo().getNodeId(), msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notifyTransportAboutProfileUpdate(UUID sessionId, SessionInfoMetaData sessionMd, DeviceCredentials deviceCredentials) {
|
void notifyTransportAboutDeviceCredentialsUpdate(UUID sessionId, SessionInfoMetaData sessionMd, DeviceCredentials deviceCredentials) {
|
||||||
ToTransportUpdateCredentialsProto.Builder notification = ToTransportUpdateCredentialsProto.newBuilder();
|
ToTransportUpdateCredentialsProto.Builder notification = ToTransportUpdateCredentialsProto.newBuilder();
|
||||||
notification.addCredentialsId(deviceCredentials.getCredentialsId());
|
notification.addCredentialsId(deviceCredentials.getCredentialsId());
|
||||||
notification.addCredentialsValue(deviceCredentials.getCredentialsValue());
|
notification.addCredentialsValue(deviceCredentials.getCredentialsValue());
|
||||||
|
|||||||
@ -29,7 +29,7 @@ import org.thingsboard.server.queue.util.TbLwM2mTransportComponent;
|
|||||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MAuthException;
|
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MAuthException;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext;
|
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
|
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.store.TbSecurityStore;
|
import org.thingsboard.server.transport.lwm2m.server.store.TbMainSecurityStore;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ import java.util.Arrays;
|
|||||||
public class TbLwM2MAuthorizer implements Authorizer {
|
public class TbLwM2MAuthorizer implements Authorizer {
|
||||||
|
|
||||||
private final TbLwM2MDtlsSessionStore sessionStorage;
|
private final TbLwM2MDtlsSessionStore sessionStorage;
|
||||||
private final TbSecurityStore securityStore;
|
private final TbMainSecurityStore securityStore;
|
||||||
private final SecurityChecker securityChecker = new SecurityChecker();
|
private final SecurityChecker securityChecker = new SecurityChecker();
|
||||||
private final LwM2mClientContext clientContext;
|
private final LwM2mClientContext clientContext;
|
||||||
|
|
||||||
@ -60,8 +60,7 @@ public class TbLwM2MAuthorizer implements Authorizer {
|
|||||||
}
|
}
|
||||||
// If session info is not found, this may be the trusted certificate, so we still need to check all other options below.
|
// If session info is not found, this may be the trusted certificate, so we still need to check all other options below.
|
||||||
}
|
}
|
||||||
SecurityInfo expectedSecurityInfo = null;
|
SecurityInfo expectedSecurityInfo;
|
||||||
if (securityStore != null) {
|
|
||||||
try {
|
try {
|
||||||
expectedSecurityInfo = securityStore.getByEndpoint(registration.getEndpoint());
|
expectedSecurityInfo = securityStore.getByEndpoint(registration.getEndpoint());
|
||||||
if (expectedSecurityInfo != null && expectedSecurityInfo.usePSK() && expectedSecurityInfo.getEndpoint().equals(SecurityMode.NO_SEC.toString())
|
if (expectedSecurityInfo != null && expectedSecurityInfo.usePSK() && expectedSecurityInfo.getEndpoint().equals(SecurityMode.NO_SEC.toString())
|
||||||
@ -73,10 +72,10 @@ public class TbLwM2MAuthorizer implements Authorizer {
|
|||||||
log.info("Registration failed: FORBIDDEN, endpointId: [{}]", registration.getEndpoint());
|
log.info("Registration failed: FORBIDDEN, endpointId: [{}]", registration.getEndpoint());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (securityChecker.checkSecurityInfo(registration.getEndpoint(), senderIdentity, expectedSecurityInfo)) {
|
if (securityChecker.checkSecurityInfo(registration.getEndpoint(), senderIdentity, expectedSecurityInfo)) {
|
||||||
return registration;
|
return registration;
|
||||||
} else {
|
} else {
|
||||||
|
securityStore.remove(registration.getEndpoint(), registration.getId());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,6 @@ import org.eclipse.leshan.core.node.codec.DefaultLwM2mEncoder;
|
|||||||
import org.eclipse.leshan.server.californium.LeshanServer;
|
import org.eclipse.leshan.server.californium.LeshanServer;
|
||||||
import org.eclipse.leshan.server.californium.LeshanServerBuilder;
|
import org.eclipse.leshan.server.californium.LeshanServerBuilder;
|
||||||
import org.eclipse.leshan.server.californium.registration.CaliforniumRegistrationStore;
|
import org.eclipse.leshan.server.californium.registration.CaliforniumRegistrationStore;
|
||||||
import org.eclipse.leshan.server.model.LwM2mModelProvider;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.thingsboard.server.cache.ota.OtaPackageDataCache;
|
import org.thingsboard.server.cache.ota.OtaPackageDataCache;
|
||||||
import org.thingsboard.server.common.data.DataConstants;
|
import org.thingsboard.server.common.data.DataConstants;
|
||||||
@ -33,7 +32,6 @@ import org.thingsboard.server.queue.util.TbLwM2mTransportComponent;
|
|||||||
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
||||||
import org.thingsboard.server.transport.lwm2m.secure.TbLwM2MAuthorizer;
|
import org.thingsboard.server.transport.lwm2m.secure.TbLwM2MAuthorizer;
|
||||||
import org.thingsboard.server.transport.lwm2m.secure.TbLwM2MDtlsCertificateVerifier;
|
import org.thingsboard.server.transport.lwm2m.secure.TbLwM2MDtlsCertificateVerifier;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClientContext;
|
|
||||||
import org.thingsboard.server.transport.lwm2m.server.store.TbSecurityStore;
|
import org.thingsboard.server.transport.lwm2m.server.store.TbSecurityStore;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2mUplinkMsgHandler;
|
import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2mUplinkMsgHandler;
|
||||||
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
||||||
|
|||||||
@ -19,10 +19,10 @@ import io.netty.util.concurrent.Future;
|
|||||||
import io.netty.util.concurrent.GenericFutureListener;
|
import io.netty.util.concurrent.GenericFutureListener;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.thingsboard.server.common.data.Device;
|
import org.thingsboard.server.common.data.Device;
|
||||||
import org.thingsboard.server.common.data.DeviceProfile;
|
import org.thingsboard.server.common.data.DeviceProfile;
|
||||||
import org.thingsboard.server.common.data.ResourceType;
|
import org.thingsboard.server.common.data.ResourceType;
|
||||||
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.transport.SessionMsgListener;
|
import org.thingsboard.server.common.transport.SessionMsgListener;
|
||||||
import org.thingsboard.server.common.transport.TransportService;
|
import org.thingsboard.server.common.transport.TransportService;
|
||||||
import org.thingsboard.server.gen.transport.TransportProtos;
|
import org.thingsboard.server.gen.transport.TransportProtos;
|
||||||
@ -108,4 +108,10 @@ public class LwM2mSessionMsgListener implements GenericFutureListener<Future<? s
|
|||||||
this.handler.onResourceDelete(resourceDeleteMsgOpt);
|
this.handler.onResourceDelete(resourceDeleteMsgOpt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeviceDeleted(DeviceId deviceId) {
|
||||||
|
log.trace("[{}] Device on delete", deviceId);
|
||||||
|
this.handler.onDeviceDelete(deviceId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,8 +57,6 @@ public interface LwM2mClientContext {
|
|||||||
|
|
||||||
void update(LwM2mClient lwM2MClient);
|
void update(LwM2mClient lwM2MClient);
|
||||||
|
|
||||||
void removeCredentials(TransportProtos.SessionInfoProto sessionInfo);
|
|
||||||
|
|
||||||
void sendMsgsAfterSleeping(LwM2mClient lwM2MClient);
|
void sendMsgsAfterSleeping(LwM2mClient lwM2MClient);
|
||||||
|
|
||||||
void onUplink(LwM2mClient client);
|
void onUplink(LwM2mClient client);
|
||||||
|
|||||||
@ -328,11 +328,6 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeCredentials(TransportProtos.SessionInfoProto sessionInfo) {
|
|
||||||
//TODO: implement
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendMsgsAfterSleeping(LwM2mClient lwM2MClient) {
|
public void sendMsgsAfterSleeping(LwM2mClient lwM2MClient) {
|
||||||
if (LwM2MClientState.REGISTERED.equals(lwM2MClient.getState())) {
|
if (LwM2MClientState.REGISTERED.equals(lwM2MClient.getState())) {
|
||||||
|
|||||||
@ -42,6 +42,7 @@ import org.eclipse.leshan.core.response.ObserveResponse;
|
|||||||
import org.eclipse.leshan.core.response.ReadCompositeResponse;
|
import org.eclipse.leshan.core.response.ReadCompositeResponse;
|
||||||
import org.eclipse.leshan.core.response.ReadResponse;
|
import org.eclipse.leshan.core.response.ReadResponse;
|
||||||
import org.eclipse.leshan.server.registration.Registration;
|
import org.eclipse.leshan.server.registration.Registration;
|
||||||
|
import org.eclipse.leshan.server.registration.RegistrationStore;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.common.util.DonAsynchron;
|
import org.thingsboard.common.util.DonAsynchron;
|
||||||
@ -52,6 +53,7 @@ import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes;
|
|||||||
import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
|
import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
|
||||||
import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration;
|
import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration;
|
||||||
import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
|
import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.ota.OtaPackageUtil;
|
import org.thingsboard.server.common.data.ota.OtaPackageUtil;
|
||||||
import org.thingsboard.server.common.transport.TransportService;
|
import org.thingsboard.server.common.transport.TransportService;
|
||||||
@ -85,10 +87,10 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttrib
|
|||||||
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttributesRequest;
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttributesRequest;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.LwM2MOtaUpdateService;
|
import org.thingsboard.server.transport.lwm2m.server.ota.LwM2MOtaUpdateService;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.rpc.LwM2MRpcRequestHandler;
|
|
||||||
import org.thingsboard.server.transport.lwm2m.server.session.LwM2MSessionManager;
|
import org.thingsboard.server.transport.lwm2m.server.session.LwM2MSessionManager;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
|
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
|
||||||
import org.thingsboard.server.transport.lwm2m.utils.LwM2MTransportUtil;
|
import org.thingsboard.server.transport.lwm2m.utils.LwM2MTransportUtil;
|
||||||
|
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2mSecurityStore;
|
||||||
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
@ -147,6 +149,8 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
private final LwM2mClientContext clientContext;
|
private final LwM2mClientContext clientContext;
|
||||||
private final LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler;
|
private final LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler;
|
||||||
private final LwM2mVersionedModelProvider modelProvider;
|
private final LwM2mVersionedModelProvider modelProvider;
|
||||||
|
private final RegistrationStore registrationStore;
|
||||||
|
private final TbLwM2mSecurityStore securityStore;
|
||||||
|
|
||||||
public DefaultLwM2mUplinkMsgHandler(TransportService transportService,
|
public DefaultLwM2mUplinkMsgHandler(TransportService transportService,
|
||||||
LwM2MTransportServerConfig config,
|
LwM2MTransportServerConfig config,
|
||||||
@ -159,7 +163,9 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
@Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler,
|
@Lazy LwM2mDownlinkMsgHandler defaultLwM2MDownlinkMsgHandler,
|
||||||
LwM2mTransportContext context,
|
LwM2mTransportContext context,
|
||||||
TbLwM2MDtlsSessionStore sessionStore,
|
TbLwM2MDtlsSessionStore sessionStore,
|
||||||
LwM2mVersionedModelProvider modelProvider) {
|
LwM2mVersionedModelProvider modelProvider,
|
||||||
|
RegistrationStore registrationStore,
|
||||||
|
TbLwM2mSecurityStore securityStore) {
|
||||||
this.transportService = transportService;
|
this.transportService = transportService;
|
||||||
this.sessionManager = sessionManager;
|
this.sessionManager = sessionManager;
|
||||||
this.attributesService = attributesService;
|
this.attributesService = attributesService;
|
||||||
@ -172,6 +178,8 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
this.context = context;
|
this.context = context;
|
||||||
this.sessionStore = sessionStore;
|
this.sessionStore = sessionStore;
|
||||||
this.modelProvider = modelProvider;
|
this.modelProvider = modelProvider;
|
||||||
|
this.registrationStore = registrationStore;
|
||||||
|
this.securityStore = securityStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@ -277,8 +285,10 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
* @param observations - !!! Warn: if have not finishing unReg, then this operation will be finished on next Client`s connect
|
* @param observations - !!! Warn: if have not finishing unReg, then this operation will be finished on next Client`s connect
|
||||||
*/
|
*/
|
||||||
public void unReg(Registration registration, Collection<Observation> observations) {
|
public void unReg(Registration registration, Collection<Observation> observations) {
|
||||||
executor.submit(() -> {
|
executor.submit(() -> doUnReg(registration, clientContext.getClientByEndpoint(registration.getEndpoint())));
|
||||||
LwM2mClient client = clientContext.getClientByEndpoint(registration.getEndpoint());
|
}
|
||||||
|
|
||||||
|
private void doUnReg(Registration registration, LwM2mClient client) {
|
||||||
try {
|
try {
|
||||||
logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
|
logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
|
||||||
clientContext.unregister(client, registration);
|
clientContext.unregister(client, registration);
|
||||||
@ -296,7 +306,6 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
|
log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
|
||||||
logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
|
logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -394,6 +403,11 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeviceDelete(DeviceId deviceId) {
|
||||||
|
clearAndUnregister(clientContext.getClientByDeviceId(deviceId.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) {
|
public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) {
|
||||||
String idVer = resourceUpdateMsgOpt.getResourceKey();
|
String idVer = resourceUpdateMsgOpt.getResourceKey();
|
||||||
@ -902,8 +916,8 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onToTransportUpdateCredentials(SessionInfoProto sessionInfo, TransportProtos.ToTransportUpdateCredentialsProto updateCredentials) {
|
public void onToTransportUpdateCredentials(SessionInfoProto sessionInfo, TransportProtos.ToTransportUpdateCredentialsProto updateCredentials) {
|
||||||
log.info("[{}] idList [{}] valueList updateCredentials", updateCredentials.getCredentialsIdList(), updateCredentials.getCredentialsValueList());
|
log.info("[{}] updateCredentials", sessionInfo);
|
||||||
this.clientContext.removeCredentials(sessionInfo);
|
clearAndUnregister(clientContext.getClientBySessionInfo(sessionInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -980,4 +994,16 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
|
|||||||
.setLastActivityTime(System.currentTimeMillis())
|
.setLastActivityTime(System.currentTimeMillis())
|
||||||
.build(), TransportServiceCallback.EMPTY);
|
.build(), TransportServiceCallback.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void clearAndUnregister(LwM2mClient client) {
|
||||||
|
client.lock();
|
||||||
|
try {
|
||||||
|
Registration registration = client.getRegistration();
|
||||||
|
doUnReg(registration, client);
|
||||||
|
securityStore.remove(registration.getEndpoint(), registration.getId());
|
||||||
|
registrationStore.removeRegistration(registration.getId());
|
||||||
|
} finally {
|
||||||
|
client.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.eclipse.leshan.core.response.ReadResponse;
|
|||||||
import org.eclipse.leshan.server.registration.Registration;
|
import org.eclipse.leshan.server.registration.Registration;
|
||||||
import org.thingsboard.server.common.data.Device;
|
import org.thingsboard.server.common.data.Device;
|
||||||
import org.thingsboard.server.common.data.DeviceProfile;
|
import org.thingsboard.server.common.data.DeviceProfile;
|
||||||
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.gen.transport.TransportProtos;
|
import org.thingsboard.server.gen.transport.TransportProtos;
|
||||||
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
|
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
|
||||||
@ -49,6 +50,8 @@ public interface LwM2mUplinkMsgHandler {
|
|||||||
|
|
||||||
void onDeviceUpdate(TransportProtos.SessionInfoProto sessionInfo, Device device, Optional<DeviceProfile> deviceProfileOpt);
|
void onDeviceUpdate(TransportProtos.SessionInfoProto sessionInfo, Device device, Optional<DeviceProfile> deviceProfileOpt);
|
||||||
|
|
||||||
|
void onDeviceDelete(DeviceId deviceId);
|
||||||
|
|
||||||
void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt);
|
void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt);
|
||||||
|
|
||||||
void onResourceDelete(TransportProtos.ResourceDeleteMsg resourceDeleteMsgOpt);
|
void onResourceDelete(TransportProtos.ResourceDeleteMsg resourceDeleteMsgOpt);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user