Refactoring or requests to the client
This commit is contained in:
parent
ef54e5580e
commit
4287d838be
@ -740,8 +740,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initReadAttrTelemetryObserveToClient(LwM2mClient lwM2MClient,
|
private void initReadAttrTelemetryObserveToClient(LwM2mClient lwM2MClient, LwM2mTypeOper typeOper, Set<String> clientObjects) {
|
||||||
LwM2mTypeOper typeOper, Set<String> clientObjects) {
|
|
||||||
LwM2mClientProfile lwM2MClientProfile = clientContext.getProfile(lwM2MClient.getProfileId());
|
LwM2mClientProfile lwM2MClientProfile = clientContext.getProfile(lwM2MClient.getProfileId());
|
||||||
Set<String> result = null;
|
Set<String> result = null;
|
||||||
ConcurrentHashMap<String, Object> params = null;
|
ConcurrentHashMap<String, Object> params = null;
|
||||||
@ -762,28 +761,42 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
|
|||||||
params = this.getPathForWriteAttributes(lwM2MClientProfile.getPostAttributeLwm2mProfile());
|
params = this.getPathForWriteAttributes(lwM2MClientProfile.getPostAttributeLwm2mProfile());
|
||||||
result = params.keySet();
|
result = params.keySet();
|
||||||
}
|
}
|
||||||
if (result != null && !result.isEmpty()) {
|
sendRequestsToClient(lwM2MClient, typeOper, clientObjects, result, params);
|
||||||
// #1
|
|
||||||
Set<String> pathSend = result.stream().filter(target -> {
|
|
||||||
return target.split(LWM2M_SEPARATOR_PATH).length < 3 ?
|
|
||||||
clientObjects.contains("/" + target.split(LWM2M_SEPARATOR_PATH)[1]) :
|
|
||||||
clientObjects.contains("/" + target.split(LWM2M_SEPARATOR_PATH)[1] + "/" + target.split(LWM2M_SEPARATOR_PATH)[2]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendRequestsToClient(LwM2mClient lwM2MClient, LwM2mTypeOper operationType, Set<String> supportedObjectIds, Set<String> desiredObjectIds, ConcurrentHashMap<String, Object> params) {
|
||||||
|
if (desiredObjectIds != null && !desiredObjectIds.isEmpty()) {
|
||||||
|
Set<String> targetObjectIds = desiredObjectIds.stream().filter(target -> isSupportedTargetId(supportedObjectIds, target)
|
||||||
).collect(Collectors.toUnmodifiableSet());
|
).collect(Collectors.toUnmodifiableSet());
|
||||||
if (!pathSend.isEmpty()) {
|
if (!targetObjectIds.isEmpty()) {
|
||||||
lwM2MClient.getPendingReadRequests().addAll(pathSend);
|
//TODO: remove this side effect?
|
||||||
ConcurrentHashMap<String, Object> finalParams = params;
|
lwM2MClient.getPendingReadRequests().addAll(targetObjectIds);
|
||||||
pathSend.forEach(target -> {
|
targetObjectIds.forEach(target -> {
|
||||||
lwM2mTransportRequest.sendAllRequest(lwM2MClient, target, typeOper,
|
Object additionalParams = params != null ? params.get(target) : null;
|
||||||
finalParams != null ? finalParams.get(target) : null, this.config.getTimeout(), null);
|
lwM2mTransportRequest.sendAllRequest(lwM2MClient, target, operationType, additionalParams, this.config.getTimeout(), null);
|
||||||
});
|
});
|
||||||
if (OBSERVE.equals(typeOper)) {
|
if (OBSERVE.equals(operationType)) {
|
||||||
lwM2MClient.initReadValue(this, null);
|
lwM2MClient.initReadValue(this, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isSupportedTargetId(Set<String> supportedIds, String targetId) {
|
||||||
|
String[] targetIdParts = targetId.split(LWM2M_SEPARATOR_PATH);
|
||||||
|
if (targetIdParts.length <= 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String targetIdSearch = targetIdParts[0];
|
||||||
|
for (int i = 1; i < targetIdParts.length; i++) {
|
||||||
|
targetIdSearch += "/" + targetIdParts[i];
|
||||||
|
if (supportedIds.contains(targetIdSearch)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private ConcurrentHashMap<String, Object> getPathForWriteAttributes(JsonObject objectJson) {
|
private ConcurrentHashMap<String, Object> getPathForWriteAttributes(JsonObject objectJson) {
|
||||||
ConcurrentHashMap<String, Object> pathAttributes = new Gson().fromJson(objectJson.toString(),
|
ConcurrentHashMap<String, Object> pathAttributes = new Gson().fromJson(objectJson.toString(),
|
||||||
new TypeToken<ConcurrentHashMap<String, Object>>() {
|
new TypeToken<ConcurrentHashMap<String, Object>>() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user