Browse Source

device state service: refactored transformInactivityTimeout

pull/4910/head
Sergey Matvienko 5 years ago
committed by Andrew Shvayka
parent
commit
06fc403850
  1. 30
      application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java

30
application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java

@ -560,27 +560,15 @@ public class DefaultDeviceStateService extends TbApplicationEventListener<Partit
if (!persistToTelemetry || deviceStateData.getState().getInactivityTimeout() != TimeUnit.SECONDS.toMillis(defaultInactivityTimeoutInSec)) { if (!persistToTelemetry || deviceStateData.getState().getInactivityTimeout() != TimeUnit.SECONDS.toMillis(defaultInactivityTimeoutInSec)) {
return future; //fail fast return future; //fail fast
} }
final SettableFuture<DeviceStateData> resultFuture = SettableFuture.create(); var attributesFuture = attributesService.find(TenantId.SYS_TENANT_ID, deviceStateData.getDeviceId(), SERVER_SCOPE, INACTIVITY_TIMEOUT);
Futures.addCallback( return Futures.transform(attributesFuture, attributes -> {
attributesService.find(TenantId.SYS_TENANT_ID, deviceStateData.getDeviceId(), SERVER_SCOPE, INACTIVITY_TIMEOUT), attributes.flatMap(KvEntry::getLongValue).ifPresent((inactivityTimeout) -> {
new FutureCallback<Optional<AttributeKvEntry>>() { if (inactivityTimeout > 0) {
@Override deviceStateData.getState().setInactivityTimeout(inactivityTimeout);
public void onSuccess(Optional<AttributeKvEntry> inactivityTimeoutOpt) { }
inactivityTimeoutOpt.flatMap(KvEntry::getLongValue).ifPresent((inactivityTimeout) -> { });
if (inactivityTimeout > 0) { return deviceStateData;
deviceStateData.getState().setInactivityTimeout(inactivityTimeout); }, deviceStateExecutor);
}
});
resultFuture.set(deviceStateData);
}
@Override
public void onFailure(Throwable t) {
resultFuture.setException(t);
}
},
deviceStateExecutor);
return resultFuture;
}, deviceStateExecutor); }, deviceStateExecutor);
} }

Loading…
Cancel
Save